feat(tmdb): matching d'affiches adapté film/série/anime#6
Merged
Conversation
added 2 commits
June 20, 2026 10:48
Matching adapté au type de média et résilient aux noms de release crades.
- tmdb_match: boucle word-removal (raccourcit la requête mot par mot, garde la
plus longue au-dessus du seuil), année en paramètre TMDB typé, fusion
bilingue fr/en des titres par id, flag transitoire vs no-match pour ne pas
brûler match_attempts sur un 5xx passager
- recherche TOUJOURS movie ET tv, le scoring tranche (corrige les séries qui
matchaient un film homonyme : "Breaking Bad" -> film "Breaking Bad Wolf")
- preferTv structurel: >=2 vidéos ou sous-dossiers saison/numérotés -> série,
plus fiable que le nom de fichier; bonus de type TV renforcé dans ce cas
- regex épisode élargie aux numéros 3-4 chiffres (s\d{1,2}e?\d{0,4})
- worker délègue à tmdb_match; sleep uniquement sur appel réseau réel
- démo: lance le vrai worker au démarrage (suppression du seed en dur), worker
ajouté au cron Docker; médias de démo enrichis + cas limites
- durcissement: media dir passé via variable exportée (pas d'interpolation -c)
- docs/TMDB_POSTERS.md; tests tmdb_match + extraction (épisodes 3-4 chiffres)
Lien démo README mis à jour vers le nouveau serveur.
- params de sortie bool &$responded/$fromCache : défaut false (pas null) → type non-nullable attendu par PHPStan - e2e: démo enrichie (18 films, 5 animés, 6 séries) → maj des comptes attendus
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contexte
Le matching d'affiches TMDB cherchait des films partout : toutes les séries et animés matchaient un film homonyme (« Breaking Bad » → film « Breaking Bad Wolf », « The Mandalorian » → le film, « One Piece » → « One Piece: Gold »…). Cette PR rend le matching réellement adaptatif au type de média et plus robuste sur les noms de release crades.
Changements
Cœur du matching (
functions.php)tmdb_match: boucle word-removal (raccourcit la requête mot par mot, garde la plus longue qui passe le seuil), année en paramètre TMDB typé (&year=/&first_air_date_year=), fusion bilingue fr/en des variantes de titre par id (clé pour l'anime), flag transitoire vs no-match (un 5xx passager ne brûle plusmatch_attempts).movieETtv— c'est le scoring (popularité + similarité + type) qui tranche. C'était la régression principale.s\d{1,2}e?\d{0,4}), validée sur un corpus de torrents réels.Worker (
tools/tmdb-worker.php)tmdb_match.preferTvstructurel : un dossier est une série s'il contient ≥2 vidéos ou des sous-dossiers saison/numérotés (Season 1,01,02) — plus fiable que parser le nom de fichier.usleepuniquement sur appel réseau réel (plus de sommeil sur cache hit).Démo Docker = vrai install
seed-tmdb.php) →demo-bootstrap.phplance le vrai worker au démarrage ; worker ajouté au cron Docker (manquait aux installs Docker).su -c).Doc & tests
docs/TMDB_POSTERS.md: flux complet du système d'affiches.tests/TmdbMatchTest.php+ cas d'extraction (épisodes 3-4 chiffres). Suite : 456 tests verts.Vérification
Rebuild Docker propre (volumes vierges) : 11/11 séries+animés matchés en
tv(vs 0/11 avant), 18/18 films restentmovie, vidéo/HLS/transcode OK.Lien démo du README mis à jour vers le nouveau serveur.