Format : Title.Event.Year.FRENCH.Resolution.WEBRip.x264|HEVC.AAC-ReMoRa.mp4
- build_release_name() : slugify avec strip accents, apostrophe→point,
déduplique l'année si présente dans le titre ET passée séparément,
détecte la résolution et le codec depuis les infos yt-dlp
- enqueue() : reçoit subtitle + year depuis l'API
- _run() : renomme le fichier après download, met à jour le filename en DB
- DownloadRequest : subtitle + year ajoutés
- app.js : extrait l'année du subtitle via regex avant d'envoyer la requête
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- tmdb.py : recherche TMDB par title+subtitle, matching fuzzy,
cache SQLite 30 jours (table tmdb_cache dans arte_dl.db)
- arte_api.py : enrichissement concurrent (5 workers) après résolution
des IDs ; ajoute tmdb_id, tmdb_poster, tmdb_backdrop au concert
- app.js : backdrop TMDB utilisé comme thumbnail de carte quand dispo ;
subtitle affiché sous le titre de carte ; poster dans la modal ;
lien direct vers la fiche TMDB
- docker-compose.yml : passage de TMDB_API_KEY au container
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- arte_api.py : GENRE_PAGES devient une liste de (nom, url), chaque
concert reçoit un champ "categories" avec ses genres d'appartenance
- main.py : endpoint /api/categories + param ?category= sur /api/concerts
- index.html : barre de pills catégories (Tout + 10 genres)
- style.css : styles .cat-bar / .cat-pill avec pill active en or
- app.js : chargement dynamique des pills, filtre catégorie dans le state
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>