256 lines
6.5 KiB
Markdown
256 lines
6.5 KiB
Markdown
|
|
# 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
|