From 0ad2e22cd0dace9c97a9d6c2764dee8cf8de1f9f Mon Sep 17 00:00:00 2001 From: Raynoxis <34026291+Raynoxis@users.noreply.github.com> Date: Tue, 25 Nov 2025 01:15:09 +0100 Subject: [PATCH] Update documentation with all new features MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documentation updates: - Add comprehensive feature list (security, performance, UX) - Document real-time progress bar with SSE - Add security section with hardening measures - Document API endpoints (analyze, download, progress, cleanup) - Add architecture overview with UUID sessions - Add troubleshooting section - Add file management documentation - Add changelog with v2.0.0 release notes - Update badges (added security badge) - Add detailed usage steps with progress bar - Document non-blocking downloads - Add best practices for production deployment đŸ€– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- README.md | 186 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 171 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 9352208..0632db1 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,41 @@ # 🎬 yt-dlp Web Interface -Interface web pour tĂ©lĂ©charger des vidĂ©os YouTube, avec options de conversion et affichage dĂ©taillĂ©. Utilise l'excellent [yt-dlp](https://github.com/yt-dlp/yt-dlp). Le tout conteneurisĂ© avec Docker/Podman. CodĂ© avec mon ami : Claude AI +Interface web moderne et sĂ©curisĂ©e pour tĂ©lĂ©charger des vidĂ©os YouTube, avec options de conversion et affichage dĂ©taillĂ©. Utilise l'excellent [yt-dlp](https://github.com/yt-dlp/yt-dlp). Le tout conteneurisĂ© avec Docker/Podman. CodĂ© avec mon ami : Claude AI ![License](https://img.shields.io/badge/license-MIT-blue.svg) ![Docker](https://img.shields.io/badge/docker-ready-blue.svg) ![Python](https://img.shields.io/badge/python-3.11-blue.svg) +![Security](https://img.shields.io/badge/security-hardened-green.svg) ## ✹ FonctionnalitĂ©s +### đŸŽ„ TĂ©lĂ©chargement - 🔍 **Analyse complĂšte** des formats vidĂ©o et audio disponibles - 🎯 **SĂ©lection prĂ©cise** des formats (qualitĂ©, codec, bitrate) - ⚙ **Options de sortie** personnalisables (MP4, MKV, WebM) - đŸŽ” **Transcodage audio** (AAC, MP3, Opus) avec contrĂŽle du bitrate +- đŸŽ” **Mode audio seulement** pour extraire uniquement l'audio + +### 📊 Interface & UX - 📩 **Interface moderne** et responsive +- 📈 **Barre de progression en temps rĂ©el** avec SSE (Server-Sent Events) +- ⚡ **TĂ©lĂ©chargements non-bloquants** - multiples tĂ©lĂ©chargements simultanĂ©s +- 💹 **Vitesse et ETA** affichĂ©s pendant le tĂ©lĂ©chargement +- 📋 **Affichage de la commande** yt-dlp exĂ©cutĂ©e pour transparence + +### 🔒 SĂ©curitĂ© +- ✅ **Validation stricte des URLs** YouTube (protection contre injection de commandes) +- đŸ›Ąïž **Protection path traversal** sĂ©curisĂ©e +- đŸ‘€ **Container non-root** (exĂ©cution en tant qu'utilisateur `appuser`) +- 🔐 **Validation des inputs** (conteneurs, codecs, bitrate) +- 🔍 **Logging complet** pour audit et debugging + +### 🚀 Performance & FiabilitĂ© +- 🆔 **Sessions UUID isolĂ©es** - pas de conflit entre tĂ©lĂ©chargements +- đŸ§č **Nettoyage automatique** des fichiers anciens (>1h) +- 🔄 **Healthcheck intĂ©grĂ©** pour monitoring +- 📝 **Logs dĂ©taillĂ©s** avec rotation automatique - 🐳 **ConteneurisĂ©** pour un dĂ©ploiement facile -- đŸ§č **Nettoyage automatique** des fichiers entre les tĂ©lĂ©chargements -- 📋 **Affichage de la commande** exĂ©cutĂ©e pour transparence ## 🚀 DĂ©marrage rapide @@ -27,18 +47,18 @@ docker run -d -p 5000:5000 --name ytdlp-web raynoxis/yt-dlp-web-interface:latest ### Avec Podman ```bash -podman pull raynoxis/yt-dlp-web-interface:latest +podman pull docker.io/raynoxis/yt-dlp-web-interface:latest podman run -d -p 5000:5000 --name ytdlp-web raynoxis/yt-dlp-web-interface:latest ``` -### Avec Docker Compose +### Avec Docker Compose (RecommandĂ©) ```bash git clone https://github.com/Raynoxis/yt-dlp-Web-Interface.git cd yt-dlp-Web-Interface docker-compose up -d ``` -AccĂ©dez Ă  l'interface : **http://localhost:5000** +AccĂ©dez Ă  l'interface : **http://localhost:5001** (ou 5000 si vous utilisez la commande docker run directe) ## 📖 Documentation @@ -64,20 +84,21 @@ docker run -d -p 5000:5000 --name ytdlp-web raynoxis/yt-dlp-web-interface ## 🎯 Utilisation 1. Collez l'URL d'une vidĂ©o YouTube -2. Cliquez sur "Analyser la vidĂ©o" +2. Cliquez sur **"Analyser la vidĂ©o"** 3. SĂ©lectionnez les formats vidĂ©o et audio souhaitĂ©s 4. Choisissez les options de sortie (conteneur, codec audio, bitrate) -5. Cliquez sur "TĂ©lĂ©charger" -6. TĂ©lĂ©chargez le fichier gĂ©nĂ©rĂ© +5. Cliquez sur **"TĂ©lĂ©charger"** +6. **Suivez la progression en temps rĂ©el** avec la barre de progression +7. TĂ©lĂ©chargez le fichier gĂ©nĂ©rĂ© ## 📾 Screenshots -### Etape 1 +### Etape 1 - Analyse ![Etape 1](docs/screenshots/step1.png) -### Etape 2 +### Etape 2 - SĂ©lection des formats ![Etape 2](docs/screenshots/step2.png) -### Etape 3 +### Etape 3 - TĂ©lĂ©chargement avec progression ![Etape 3](docs/screenshots/step3.png) ## 🔧 Configuration avancĂ©e @@ -96,12 +117,13 @@ docker run -d \ docker run -d \ -p 5000:5000 \ -e FLASK_ENV=production \ + -e PYTHONUNBUFFERED=1 \ --name ytdlp-web \ raynoxis/yt-dlp-web-interface:latest ``` -### Compose -```bash +### Compose complet +```yaml version: '3.8' services: @@ -109,7 +131,7 @@ services: image: raynoxis/yt-dlp-web-interface:latest container_name: ytdlp-webinterface ports: - - "5000:5000" + - "5001:5000" volumes: - ./downloads:/app/downloads restart: unless-stopped @@ -124,6 +146,122 @@ services: start_period: 40s ``` +## 🔐 SĂ©curitĂ© + +### Mesures de sĂ©curitĂ© implĂ©mentĂ©es + +- ✅ **Validation stricte** : Seules les URLs YouTube valides sont acceptĂ©es +- ✅ **Protection injection** : Validation des inputs avant exĂ©cution +- ✅ **Path traversal** : Protection contre l'accĂšs Ă  des fichiers non autorisĂ©s +- ✅ **Isolation** : Chaque tĂ©lĂ©chargement dans un rĂ©pertoire UUID unique +- ✅ **Non-root** : Le container s'exĂ©cute avec un utilisateur non-privilĂ©giĂ© +- ✅ **Logging** : Tous les Ă©vĂ©nements sont tracĂ©s pour audit +- ✅ **Nettoyage** : Suppression automatique des fichiers aprĂšs 1 heure + +### Bonnes pratiques recommandĂ©es + +```bash +# Utiliser un reverse proxy avec SSL/TLS +# Limiter l'accĂšs par IP avec un firewall +# Configurer des limites de ressources sur le container +docker run -d \ + --memory="2g" \ + --cpus="1.0" \ + -p 5000:5000 \ + raynoxis/yt-dlp-web-interface:latest +``` + +## 📊 API Endpoints + +### Analyse de vidĂ©o +```bash +POST /api/analyze +Content-Type: application/json + +{ + "url": "https://www.youtube.com/watch?v=VIDEO_ID" +} +``` + +### TĂ©lĂ©chargement +```bash +POST /api/download +Content-Type: application/json + +{ + "url": "https://www.youtube.com/watch?v=VIDEO_ID", + "video_format": "299", + "audio_format": "140", + "output_container": "mp4", + "audio_codec": "aac", + "audio_bitrate": "192k", + "audio_only": false +} +``` + +### Progression en temps rĂ©el (SSE) +```bash +GET /api/progress/ +``` + +### TĂ©lĂ©charger le fichier +```bash +GET /api/download-file// +``` + +### Nettoyage +```bash +POST /api/cleanup/ +POST /api/cleanup-all +``` + +## đŸ—‚ïž Architecture + +``` +yt-dlp-Web-Interface/ +├── app.py # Backend Flask avec SSE +├── templates/ +│ └── index.html # Frontend avec progress bar +├── downloads/ # Fichiers tĂ©lĂ©chargĂ©s (UUID sessions) +│ ├── / +│ └── / +├── Dockerfile # Image Docker (non-root) +├── docker-compose.yml # Configuration Compose +└── docs/ # Documentation +``` + +## 🔄 Gestion des fichiers + +### Nettoyage automatique +- **DĂ©clenchement** : À chaque nouveau tĂ©lĂ©chargement +- **RĂ©tention** : 1 heure par dĂ©faut +- **Action** : Suppression des rĂ©pertoires de session > 1h + +### Nettoyage manuel +```bash +# Nettoyer une session spĂ©cifique +curl -X POST http://localhost:5000/api/cleanup/ + +# Nettoyer toutes les sessions +curl -X POST http://localhost:5000/api/cleanup-all +``` + +## 🐛 DĂ©pannage + +### Les tĂ©lĂ©chargements Ă©chouent +- VĂ©rifiez que l'URL YouTube est valide +- Certains formats peuvent ne pas ĂȘtre disponibles +- Consultez les logs : `docker logs ytdlp-web` + +### Erreur de permissions +```bash +# Avec Podman, ajuster les permissions du volume +podman unshare chown -R 1000:1000 downloads/ +``` + +### Le healthcheck Ă©choue +- Attendez 40 secondes (start_period) +- VĂ©rifiez que le port 5000 est accessible ## đŸ€ Contribution @@ -144,6 +282,24 @@ Ce projet est sous licence MIT. Voir le fichier [LICENSE](LICENSE) pour plus de - [yt-dlp](https://github.com/yt-dlp/yt-dlp) - Le meilleur outil de tĂ©lĂ©chargement vidĂ©o - [Flask](https://flask.palletsprojects.com/) - Framework web Python - [FFmpeg](https://ffmpeg.org/) - Traitement vidĂ©o et audio +- [Claude AI](https://claude.ai) - Assistant de dĂ©veloppement + +## 📈 Changelog + +### v2.0.0 (2025-11-25) +- ✹ Ajout de la barre de progression en temps rĂ©el avec SSE +- 🔒 AmĂ©lioration majeure de la sĂ©curitĂ© (validation URL, path traversal) +- 🆔 Sessions UUID isolĂ©es pour tĂ©lĂ©chargements concurrents +- đŸ‘€ Container non-root pour meilleure sĂ©curitĂ© +- 📝 Logging complet pour audit et debugging +- ⚡ TĂ©lĂ©chargements non-bloquants avec threads +- đŸ§č Nettoyage automatique des sessions anciennes + +### v1.0.0 (Initial) +- 🎬 Interface web pour yt-dlp +- 🎯 SĂ©lection de formats vidĂ©o/audio +- đŸŽ” Mode audio seulement +- 🐳 Conteneurisation Docker/Podman ## ⚠ Avertissement