Un script Python avancé pour nettoyer, filtrer et optimiser les playlists M3U en utilisant curl et ffprobe pour détecter les flux valides et sélectionner automatiquement la meilleure qualité disponible.
- 📥 Multi-sources : Support de multiples sources M3U (iptv-org, freeiptv, etc.)
- 🔍 Validation intelligente : Utilise curl et ffprobe pour tester la validité des flux
- 📊 Détection automatique : Qualité des flux (720p, 1080p, etc.) et résolution réelle
- 🎯 Sélection optimale : Flux de meilleure qualité pour chaque chaîne
- 🔄 Dédoublonnage intelligent : Élimination automatique des doublons
- ⚡ Traitement parallèle : Exécution rapide avec workers configurables
- 📈 Barre de progression : Suivi en temps réel avec statistiques détaillées
- 🎛️ Configuration flexible : Catégories prédéfinies et options avancées
- 🇫🇷 Support TNT françaises : Script spécialisé pour les 25 chaînes principales
🔗 Liens utiles :
- Hébergez votre VPS & code chez Hetzner
- J'ai créé LogCentral, une plateforme de syslog cloud simple et abordable: jetez un oeil
- Mes autres réseaux sociaux & projets: mon bento
- Développé à l'aide de: Cursor
Ce projet est un outil de traitement de playlists M3U uniquement. Nous n'hébergeons, ne proposons, ni ne distribuons aucune playlist ou contenu vidéo. Cet outil fonctionne exclusivement avec les playlists que vous lui fournissez, certaines sont listées pour l'exemple.
- 🔧 Outil de traitement : Ce script nettoie et optimise vos propres playlists M3U
- 📋 Sources externes : Les URLs de playlists référencées pointent vers des sources tierces
- 🚫 Aucun contenu : Aucun flux vidéo ou playlist n'est hébergé par ce projet
- ⚖️ Responsabilité : L'utilisateur est responsable de la légalité et de l'utilisation des playlists traitées
| Métrique | Avant | Après | Amélioration |
|---|---|---|---|
| Sources supportées | 1 | 7+ | +600% |
| Flux traités | 223 | 2,910 | +1,300% |
| Flux valides | 102 | 1,543 | +1,400% |
| Taux de succès | 46% | 53% | +15% |
| Vitesse | Basique | ~11.4 flux/s | Optimisé |
curl est nécessaire pour analyser les flux vidéo. Il est généralement préinstallé sur la plupart des systèmes.
macOS (avec Homebrew) :
brew install curlUbuntu/Debian :
sudo apt install curlWindows : curl est inclus dans Windows 10 et versions ultérieures.
UV est le gestionnaire de paquets Python ultra-rapide que nous utilisons pour ce projet.
macOS et Linux :
curl -LsSf https://astral.sh/uv/install.sh | shWindows :
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"Ou avec pip :
pip install uv# Cloner le repository
git clone https://github.com/gonzague/TV-playlist-Cleaner.git
cd TV-playlist-cleaner
# Créer un environnement virtuel et installer les dépendances avec UV
uv venv
source .venv/bin/activate # Sur Windows: .venv\Scripts\activate
uv pip install "requests>=2.25.0" "tqdm>=4.60.0"
# Générer une playlist française (recommandé pour débuter)
python cleaner_config.py french
# Cloner le repository
git clone https://github.com/gonzague/TV-playlist-cleaner.git
cd TV-playlist-cleaner
# Construire l'image Docker
./docker-run.sh build
# Générer une playlist française
./docker-run.sh config french
📖 Documentation Docker complète : DOCKER.md
# Voir toutes les catégories disponibles
python cleaner_config.py
# Utiliser une catégorie spécifique
python cleaner_config.py french
python cleaner_config.py english --workers 20
python cleaner_config.py all --output playlist_complete.m3u
# Catégories disponibles: all, french, english, european, news, sports, movies, kids# Générer une playlist avec uniquement les 25 chaînes TNT principales
python cleaner_tnt.py
# Options personnalisées
python cleaner_tnt.py --workers 20 --output tnt_playlist.m3u# Script multi-sources avec dédoublonnage
python cleaner_multi_source.py
# Script avancé avec options complètes
python cleaner_advanced.py --workers 20 --output ma_playlist.m3u
# Script de base
python cleaner.py# Démonstration complète
python demo.py
# Comparaison de playlists
python compare_playlists.py playlist1.m3u playlist2.m3u
# Configuration des sources
python sources_config.py| Option | Description | Défaut |
|---|---|---|
--url |
URL de la playlist M3U | Playlist française |
--output |
Fichier de sortie | filtered.m3u |
--workers |
Nombre de workers parallèles | 10 |
--timeout |
Timeout en secondes | 15 |
--no-deduplication |
Désactiver le dédoublonnage | False |
--sources |
Sources personnalisées | Sources par défaut |
Le script cleaner_tnt.py est spécialement conçu pour les 25 chaînes TNT principales :
- TF1 - Première chaîne privée française
- France 2 - Chaîne publique généraliste
- France 3 - Chaîne publique régionale
- France 4 - Chaîne publique jeunesse
- France 5 - Chaîne publique éducative
- M6 - Chaîne privée généraliste
- Arte - Chaîne culturelle franco-allemande
- La Chaîne parlementaire - Chaîne parlementaire
- W9 - Chaîne privée divertissement
- TMC - Chaîne privée généraliste
- TFX - Chaîne privée divertissement
- Gulli - Chaîne jeunesse
- BFM TV - Chaîne d'information continue
- CNEWS - Chaîne d'information continue
- LCI - Chaîne d'information continue
- Franceinfo - Chaîne d'information publique
- CSTAR - Chaîne privée divertissement
- T18 - Chaîne privée divertissement
- NOVO19 - Chaîne privée divertissement
- TF1 Séries Films - Chaîne séries et films
- L'Équipe - Chaîne sportive
- 6Ter - Chaîne privée divertissement
- RMC Story - Chaîne d'information
- RMC Découverte - Chaîne documentaire
- Chérie 25 - Chaîne privée divertissement
- Reconnaissance intelligente étendue : Variations de noms (ex: "FRANCE 2", "France2", "France 2 HD")
- Système de fallback étendu : Jusqu'à 5 sources par chaîne
- Détection de résolution : Résolution réelle (1920x1080, 1280x720, etc.)
- Sélection qualité : Privilégie les flux HD/1080p
- Métadonnées enrichies : Date/heure de génération
🔍 Vérification de curl...
📥 Téléchargement de la playlist...
🎬 2,910 flux trouvés.
⏳ Test des flux (cela peut prendre du temps)...
Test des flux: 100%|██████████████████████████| 2910/2910 [04:15<00:00, 11.4flux/s, Valides=1543, Échoués=1367]
✅ 1,543 flux valides trouvés.
❌ 1,367 flux échoués.
🔍 Analyse des échecs...
Méthodes utilisées:
curl: 1,367 flux
Types d'erreurs:
Timeout: 856 flux
HTTP Error: 511 flux
📊 Qualités disponibles: 1080p, 720p, 576p, 480p
🔝 1,212 flux sélectionnés avec la meilleure qualité.
💾 Playlist enregistrée dans 'filtered.m3u'
📺 Exemples de flux sélectionnés:
1. TF1 (1920x1080) (1080p) [curl]
2. France 2 (1920x1080) (1080p) [curl]
3. M6 (1280x720) (720p) [curl]
4. Arte (1920x1080) (1080p) [curl]
5. BFM TV (768x432) (432p) [curl]
... et 1,207 autres
cleaner.py- Version de base avec curlcleaner_advanced.py- Version avancée avec options et barre de progressioncleaner_multi_source.py- Version multi-sources avec dédoublonnagecleaner_config.py- Wrapper avec configuration des sources par catégoriescleaner_tnt.py- Script spécialisé pour les chaînes TNT françaises
sources_config.py- Configuration des sources M3U par catégoriestests/- Tests unitairescompare_playlists.py- Comparaison et analyse de playlistsdemo.py- Script de démonstration complète
- iptv-org : Sources officielles par pays et catégories
- freeiptv : Source communautaire avec flux français et internationaux
- paratv : Source individuelle
- Catégories : all, french, english, european, news, sports, movies, kids
- Normalisation des noms de chaînes
- Suppression des indicateurs de qualité
- Détection par hash MD5 des URLs
- Conservation de la meilleure qualité
- curl : Pour les sites web et protocoles complexes
- ffprobe : Détection précise de la résolution et qualité
- curl : Pour les flux directs (.m3u8, .mp4, etc.)
- Timeout configurable : 15 secondes par défaut
- Retry automatique : 1 tentative de reconnexion
- Sources par catégories : Régions, langues, types
- Options flexibles : Workers, timeout, sortie
- Gestion d'erreurs : Téléchargement, parsing, validation
Si vous obtenez une erreur "curl n'est pas installé", assurez-vous qu'il est dans votre PATH ou installez-le avec votre gestionnaire de paquets système.
Certains flux peuvent échouer pour diverses raisons :
- Flux temporairement indisponibles
- Restrictions géographiques
- Protocoles non supportés
Le script continuera avec les flux valides.
Si le script est trop lent, vous pouvez :
- Réduire le nombre de workers :
--workers 5 - Augmenter le timeout :
--timeout 30 - Utiliser moins de sources avec
cleaner_config.py
- Détection précise de la résolution : ffprobe détecte la résolution réelle des flux vidéo
- Support de protocoles : curl supporte HTTP, HTTPS, et d'autres protocoles de streaming
- Détection de qualité : Extrait automatiquement les informations de qualité
- Robustesse : Meilleure gestion des erreurs et des timeouts
- Performance : Optimisé pour les flux de streaming en direct
- Flexibilité : Support pour la vérification directe avec ffprobe en plus de curl
- Barre de progression : Affichage en temps réel de l'avancement
- Analyse détaillée : Statistiques sur les échecs et les méthodes utilisées
- Métadonnées enrichies : Date/heure de génération et qualités détectées dans les fichiers M3U
Les contributions sont les bienvenues ! N'hésitez pas à :
- Fork le projet
- Créer une branche pour votre fonctionnalité (
git checkout -b feature/AmazingFeature) - Commit vos changements (
git commit -m 'Add some AmazingFeature') - Push vers la branche (
git push origin feature/AmazingFeature) - Ouvrir une Pull Request
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
- curl pour l'analyse des flux vidéo
- iptv-org pour les sources de playlists et paratv
- ffmpeg pour ffprobe & l'incroyable FFMPEG bien sûr.
Si vous rencontrez des problèmes ou avez des questions :
- Consultez la section Dépannage
- Vérifiez les Issues existantes
- Créez une nouvelle issue avec les détails de votre problème
⭐ Si ce projet vous a été utile, n'hésitez pas à lui donner une étoile !