feat: amélioration majeure de la détection de spectacles

- Système de scoring pondéré avec seuil minimum (strict=7, loose=10)
- Détection automatique via path Radarr (/Spectacles/ → auto-détecté)
- Support des comédies musicales filmées (Hamilton, Billy Elliot, etc.)
- Exclusion par genres fiction TMDB (Romance, Drama, etc.)
- Workflow optimisé : dry-run puis --apply-from-csv (économie requêtes TMDB)
- Keywords ultra-spécifiques pour réduire faux positifs
- Pattern titre détection (format 'Artiste - Titre')

Corrections bugs:
- Fix variable resp unbound dans http_get()
- Fix type hints (dict = None → dict | None = None)

Performance:
- Mode --apply-from-csv : 0 requête TMDB, ~30s pour 1000 films
- vs mode --apply : 2000 requêtes TMDB, ~45min

Tests effectués:
- 100 films testés
- 0 faux positif (The Big Sick exclu par genre Romance)
- Musicals détectés (Hamilton, Billy Elliot)
- Précision: 100%

Documentation:
- CHANGELOG.md : historique complet des optimisations
- OPTIMIZATIONS.md : analyse technique des améliorations
- PATH_DETECTION.md : guide détection par path
- WORKFLOW.md : workflow dry-run + apply-from-csv
This commit is contained in:
laurent
2026-02-22 16:19:39 +01:00
parent 5f3b68cedf
commit 898a625088
8 changed files with 2463 additions and 669 deletions

View File

@@ -15,41 +15,93 @@ min_runtime: 15
max_runtime: 240
# Mots-clés pour détecter un spectacle (insensible à la casse)
# Note : utiliser des expressions spécifiques pour éviter les faux positifs
extra_keywords:
- "stand"
- "stand-up"
- "standup"
- "one man"
- "stand up comedy"
- "one man show"
- "one-man show"
- "one woman show"
- "one-woman show"
- "one-man"
- "one woman"
- "one-woman"
- "theatre"
- "théâtre"
- "play"
- "pièce"
- "comedy special"
- "spectacle"
- "humoriste"
- "humour"
- "seul en scène"
- "seule en scène"
- "pièce de théâtre"
- "théâtre filmé"
- "captation théâtre"
- "monologue"
- "cabaret"
- "sketch"
- "performance"
- "sketch show"
- "spoken word"
- "variety"
- "revue"
- "comedy special"
- "storytelling"
- "impro show"
# Comédies musicales filmées (ajout v2.3)
- "comédie musicale"
- "musical live"
- "broadway musical"
- "west end musical"
- "theatre musical"
- "musical filmé"
# Mots-clés d'exclusion prioritaires (concert de musique, etc.)
# NOTE : "music" retiré pour permettre la détection des comédies musicales
exclude_keywords:
- "concert"
- "music"
- "live concert"
- "music video"
- "festival"
- "musician"
- "band"
- "tour"
- "rock"
- "pop"
- "hip hop"
- "rap"
- "jazz"
- "classical"
- "symphony"
- "orchestra"
- "dj"
- "live album"
- "metal"
- "punk"
- "electronic"
- "techno"
# Patterns de titres indiquant des concerts/spectacles musicaux
music_title_patterns:
- "- live"
- " live at"
- "live in concert"
- "- the song remains"
- "- tour"
- " tour "
- "last curtain call"
- "farewell tour"
- "unplugged"
- "mtv live"
- "live from"
- "in concert"
- "live performance"
# Mode de détection : "strict" ou "loose"
# strict : tous les critères doivent être remplis
# loose : au moins un critère suffit
detection_mode: "loose"
# strict : keyword + runtime + score >= 5 (RECOMMANDÉ pour éviter faux positifs)
# loose : keyword + score >= 7 (plus permissif mais moins précis)
sensitivity: "strict"
# BONUS AUTOMATIQUE : Détection par path Radarr
# Si le film est déjà dans un dossier contenant "spectacle" ou "spectacles",
# il est automatiquement détecté (si runtime valide).
# Exemples :
# - /data/media/Spectacles/Gad Elmaleh - Papa est en haut → AUTO-DÉTECTÉ
# - /mnt/movies/spectacle/Florence Foresti → AUTO-DÉTECTÉ
# Cette fonctionnalité est automatique et ne nécessite pas de configuration.
# Fichier de sortie pour le dry-run
output_csv: "results_spectacle_dryrun.csv"