Files
tmdb-radarr-tag/PATH_DETECTION.md
laurent 898a625088 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
2026-02-22 16:19:39 +01:00

6.5 KiB

Détection automatique par path Radarr

🎯 Fonctionnalité

Si vos spectacles sont déjà organisés dans un dossier spécifique (ex: /data/media/Spectacles/), le script les détecte automatiquement sans analyser les keywords TMDB.


🔍 Comment ça fonctionne ?

Détection

Le script vérifie le path de chaque film dans Radarr :

  • Si le path contient "spectacle" ou "spectacles" (insensible à la casse)
  • ET que le runtime est valide (> 0 et dans la fourchette [15-240] min)
  • ALORS le film est automatiquement détecté comme spectacle

Bonus de score

  • +10 points si path contient "spectacle"
  • Détection automatique même sans keywords TMDB

📂 Exemples de paths détectés

Détectés automatiquement

/data/media/Spectacles/Gad Elmaleh - Papa est en haut
/mnt/movies/spectacle/Florence Foresti - Motherfucker
/volume1/Spectacles/Jamel Debbouze/
C:\Media\Spectacles\Kev Adams
/home/user/Spectacles/Stand-Up/Louis CK

Non détectés (path normal)

/data/media/Movies/Yannick
/mnt/films/Comedies/La Syndicaliste
/volume1/Films/Je verrai toujours vos visages

🧪 Tests

Test effectué (test_path_detection.py) :

Film Path Runtime Résultat Raison
Gad Elmaleh - Papa est en haut /data/media/Spectacles/... 75 min DÉTECTÉ Path + runtime valide
Florence Foresti /data/media/spectacle/... 90 min DÉTECTÉ Path (lowercase) + runtime
Film Normal /data/media/Movies/... 120 min EXCLU Pas de path bonus
Jamel Debbouze /data/media/Spectacles/... 0 min EXCLU Runtime invalide

Résultats : 4/4 tests passés


🎬 Cas d'usage typique

Scénario 1 : Organisation existante

Vous avez déjà organisé vos spectacles dans un dossier dédié :

/data/media/
├── Movies/
│   ├── Yannick (2023)/
│   └── La Syndicaliste (2023)/
└── Spectacles/
    ├── Gad Elmaleh - Papa est en haut/
    ├── Florence Foresti - Motherfucker/
    └── Bérengère Krief - Le Trianon/

Résultat :

  • Tous les films dans Spectacles/ sont auto-détectés
  • Les films dans Movies/ sont analysés normalement (keywords TMDB)

Scénario 2 : Migration progressive

Vous voulez migrer vos spectacles vers un dossier dédié :

  1. Avant - Tout dans Movies/ :

    python script.py --limit 0 --verbose
    # Analyse TMDB pour tous les films
    
  2. Déplacer les spectacles détectés dans Radarr :

    Film → Edit → Path → /data/media/Spectacles/
    
  3. Après - Re-scanner :

    python script.py --limit 0 --apply
    # Les films dans Spectacles/ sont auto-détectés
    # Plus rapide, moins d'appels TMDB
    

⚙️ Configuration

Aucune configuration nécessaire !

La détection par path est automatique.

Personnalisation (avancé)

Si vous voulez changer le mot-clé détecté (autre que "spectacle"), modifiez script.py ligne 662 :

# Ligne 662-667 (script.py)
if movie_path and ("spectacle" in movie_path or "spectacles" in movie_path):
    # Changer ici pour d'autres mots-clés

Exemples possibles :

# Détecter "Stand-Up" dans le path
if "stand-up" in movie_path or "standup" in movie_path:

# Détecter plusieurs patterns
if any(kw in movie_path for kw in ["spectacle", "stand-up", "humour"]):

🔄 Interaction avec le scoring normal

Priorité de détection

  1. Exclusions (priorité maximale)

    • Patterns musicaux dans titre
    • Keywords d'exclusion
    • Runtime invalide
  2. Path bonus (auto-détection)

    • Si path contient "spectacle" + runtime valide
    • Détection immédiate, pas besoin de keywords
  3. Scoring normal (si pas de path bonus)

    • Keywords TMDB
    • Pattern titre " - "
    • Seuil minimum score >= 5

Exemple combiné

Cas 1 : Path bonus active

Film: "Gad Elmaleh - Papa est en haut"
Path: /data/media/Spectacles/Gad Elmaleh
Runtime: 75 min

Score: 11 (+10 path, +1 runtime)
Résultat: DÉTECTÉ (auto, pas besoin de keywords)

Cas 2 : Path normal, scoring classique

Film: "Bérengère Krief - Le Trianon"
Path: /data/media/Movies/Bérengère Krief
Runtime: 71 min
Keywords TMDB: stand-up, comedy special, one-woman show

Score: 11 (+1 runtime, +5 titre pattern, +2 stand-up, +3 one-woman show)
Résultat: DÉTECTÉ (via keywords)

📊 Avantages

Performance

  • Moins d'appels TMDB pour les films déjà classés
  • Détection instantanée si path match

Précision

  • 100% de confiance sur les films que VOUS avez déjà classés
  • Pas de faux positifs si votre organisation est correcte

Flexibilité

  • Fonctionne avec n'importe quelle structure de dossiers
  • Compatible avec les paths Windows et Linux/macOS

⚠️ Limitations

1. Runtime toujours obligatoire

Même avec path bonus, le runtime doit être > 0 et dans la fourchette [15-240] min.

Exemple :

Path: /data/media/Spectacles/Mon Spectacle
Runtime: 0 min
Résultat: EXCLU (runtime invalide prioritaire)

2. Sensible à la casse du mot "spectacle"

La détection cherche "spectacle" ou "spectacles" en lowercase.

OK :

  • /Spectacles/ → détecté
  • /spectacle/ → détecté
  • /SPECTACLES/ → détecté

KO (si vous utilisez un autre nom) :

  • /Stand-Up/ → non détecté (utilisez keywords TMDB)
  • /Humour/ → non détecté
  • /Comedy/ → non détecté

🎯 Recommandations

Pour une détection optimale

  1. Organisez vos spectacles dans un dossier dédié :

    /data/media/Spectacles/
    
  2. Utilisez le format "Artiste - Titre" dans les noms de dossiers :

    /Spectacles/Gad Elmaleh - Papa est en haut/
    /Spectacles/Florence Foresti - Motherfucker/
    
  3. Vérifiez que les runtimes sont remplis dans Radarr/TMDB

  4. Lancez le script :

    python script.py --limit 0 --apply
    

📝 Logs de détection

Avec --verbose, vous verrez :

[15:30:42] DEBUG    ✅ BONUS PATH : 'spectacle' trouvé dans /data/media/spectacles/gad elmaleh
[15:30:42] DEBUG    ✅ Détection automatique : path bonus + runtime valide
[15:30:42] INFO     → 🎭 SPECTACLE détecté ! (score=11) — runtime 75min; path contient 'spectacle' (+10)

Date : 22 février 2026
Version : 2.1 (ajout détection par path)
Statut : Testé et validé
Tests : 4/4 passés