Files
tmdb-radarr-tag/PATH_DETECTION.md

256 lines
6.5 KiB
Markdown
Raw Normal View History

# 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/` :
```bash
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 :
```bash
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 :
```python
# 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 :**
```python
# 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** :
```bash
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