Pour toi : fallback sans Sonarr et amorçage sans historique

- Sans Sonarr, les séries/films téléchargés donnent leurs genres via leur
  fiche French-Stream (page_url des téléchargements), convertis vers les
  catégories Kitsu (mapping FR→EN ; genres sans équivalent ignorés)
- Aucun historique (ni téléchargement, ni favori, ni Sonarr) : réponse
  cold_start non cachée → carte d'amorçage « téléchargez un premier titre »
- Fin de téléchargement → invalidation immédiate des recommandations
- genres_of_page ignore les fiches hors French-Stream (URLs d'animés)
This commit is contained in:
Roman
2026-09-25 15:14:14 +00:00
parent c45f1b79fd
commit d5fa546dd7
7 changed files with 174 additions and 12 deletions
+15
View File
@@ -251,6 +251,21 @@ class FrenchStreamScraper(SourceScraper):
for media_type, genres in catalog.items()
}
async def genres_of_page(self, page_url: str) -> list[str]:
"""Genres (libellés FR) de la fiche pointée par l'URL d'un téléchargement.
Utilisé par les recommandations « Pour toi » pour les séries/films,
absents de Kitsu (et donc sans signal de genre sans Sonarr).
"""
if self.base_url.split("//")[-1].split("/")[0] not in page_url:
return [] # fiche d'une autre source (animé) : rien à lire ici
source_id = _newsid_from_url(page_url)
try:
details = await self.get_details(source_id)
except ScrapeError:
return []
return details.genres or []
# ------------------------------------------------------------- details
async def get_details(self, source_id: str) -> TitleDetails: