dev: clean up genre labels from filter keys

This commit is contained in:
2026-02-24 18:51:36 +01:00
parent 76b04ddaf2
commit e5bc67eef8
2 changed files with 29 additions and 2 deletions

View File

@@ -1257,7 +1257,11 @@ class AniworldPlugin(BasisPlugin):
return list(self._genre_names_cache)
cached = _session_cache_get("genres")
if isinstance(cached, list):
names = [str(value).strip() for value in cached if str(value).strip()]
names: List[str] = []
for value in cached:
normalized = _normalize_genre_label(value)
if normalized:
names.append(normalized)
if names:
self._genre_names_cache = sorted(set(names), key=str.casefold)
return list(self._genre_names_cache)

View File

@@ -1335,9 +1335,32 @@ class SerienstreamPlugin(BasisPlugin):
def _ensure_genre_names(self) -> List[str]:
if self._genre_names_cache is not None:
return list(self._genre_names_cache)
def _normalize_cached_genre(raw: str) -> str:
text = re.sub(r"\s+", " ", str(raw or "")).strip()
key_prefix = "filter.genre_"
if text.casefold().startswith(key_prefix):
slug = text[len(key_prefix) :].strip().casefold()
slug = slug.replace("_", "-")
slug = re.sub(r"[^a-z0-9-]+", "-", slug).strip("-")
if not slug:
return ""
if slug == "doku-soap":
return "Doku-Soap"
if slug == "scifi":
return "SciFi"
if slug == "fighting-shounen":
return "Fighting-Shounen"
return " ".join(chunk.capitalize() for chunk in slug.split("-") if chunk)
return text
cached = _session_cache_get("genres")
if isinstance(cached, list):
genres = [str(value).strip() for value in cached if str(value).strip()]
genres: List[str] = []
for value in cached:
normalized = _normalize_cached_genre(value)
if normalized:
genres.append(normalized)
if genres:
self._genre_names_cache = sorted(set(genres), key=str.casefold)
return list(self._genre_names_cache)