ytb-dw / php-sdk
SDK PHP officiel pour l'API YouTube Downloader
dev-main
2025-09-16 18:13 UTC
Requires
- php: >=7.4
- ext-curl: *
- ext-json: *
Requires (Dev)
- phpunit/phpunit: ^9.0|^10.0
- psalm/phar: ^4.0|^5.0
This package is auto-updated.
Last update: 2026-03-16 19:33:53 UTC
README
SDK PHP officiel pour l'API YouTube Downloader. Téléchargez facilement des vidéos et audios YouTube dans vos applications PHP.
🚀 Fonctionnalités
- ✅ Téléchargement de vidéos YouTube en MP4
- ✅ Téléchargement audio en MP3
- ✅ Récupération des métadonnées des vidéos
- ✅ Gestion avancée des erreurs avec messages conviviaux
- ✅ Support de différentes qualités (audio et vidéo)
- ✅ Interface simple et intuitive
- ✅ Timeout configurables
- ✅ Headers HTTP personnalisables
📋 Prérequis
- PHP 7.4 ou supérieur
- Extension
jsonactivée - Extension
opensslpour les requêtes HTTPS - Une clé API valide de YtbDw
📦 Installation
Via Composer (recommandé)
composer require ytbdw/php-sdk
Installation manuelle
- Téléchargez le fichier
YtbDwClient.php - Incluez-le dans votre projet :
require_once 'path/to/YtbDwClient.php';
🔧 Configuration
Obtenir une clé API
- Rendez-vous sur https://ytb-dw.social-networking.me
- Créez un compte ou connectez-vous
- Générez votre clé API dans votre tableau de bord
- Copiez votre clé API (format :
ytb-dw-votre-cle-api)
Initialisation du client
use YtbDw\YtbDwClient; use YtbDw\YtbDwException; // Configuration de base $client = new YtbDwClient('ytb-dw-votre-cle-api'); // Configuration avancée $client = new YtbDwClient( 'ytb-dw-votre-cle-api', // Clé API 'https://ytb-dw-api.onrender.com', // URL de base (optionnel) 60 // Timeout en secondes (optionnel) );
🎯 Utilisation
Récupération des informations d'une vidéo
try { $videoInfo = $client->getVideoInfo('https://youtube.com/watch?v=dQw4w9WgXcQ'); echo "Titre: " . $videoInfo->getTitle() . "\n"; echo "Durée: " . $videoInfo->getDuration() . "\n"; echo "Auteur: " . $videoInfo->getUploader() . "\n"; // Vérifier les formats disponibles if ($videoInfo->hasAudioFormats()) { echo "Formats audio disponibles\n"; } if ($videoInfo->hasVideoFormats()) { echo "Formats vidéo disponibles\n"; } } catch (YtbDwException $e) { echo "Erreur: " . $e->getFriendlyMessage() . "\n"; }
Téléchargement audio (MP3)
try { // Téléchargement audio simple $result = $client->downloadAudio('https://youtube.com/watch?v=dQw4w9WgXcQ'); echo "Fichier téléchargé: " . $result->getFilePath() . "\n"; echo "Taille: " . $result->getFileSizeFormatted() . "\n"; // Avec qualité et nom de fichier personnalisés $result = $client->downloadAudio( 'https://youtube.com/watch?v=dQw4w9WgXcQ', '192kbps', // Qualité audio 'ma_musique.mp3' // Nom du fichier ); } catch (YtbDwException $e) { echo "Erreur: " . $e->getFriendlyMessage() . "\n"; }
Téléchargement vidéo (MP4)
try { // Téléchargement vidéo simple (720p par défaut) $result = $client->downloadVideo('https://youtube.com/watch?v=dQw4w9WgXcQ'); echo "Fichier téléchargé: " . $result->getFilePath() . "\n"; echo "Taille: " . $result->getFileSizeFormatted() . "\n"; // Avec qualité et nom personnalisés $result = $client->downloadVideo( 'https://youtube.com/watch?v=dQw4w9WgXcQ', '1080', // Qualité vidéo 'ma_video.mp4' // Nom du fichier ); } catch (YtbDwException $e) { echo "Erreur: " . $e->getFriendlyMessage() . "\n"; }
Téléchargement générique
try { // Méthode générique pour plus de contrôle $result = $client->download( 'https://youtube.com/watch?v=dQw4w9WgXcQ', 'video', // Format: 'video' ou 'audio' '720', // Qualité 'mon_fichier.mp4' // Chemin de sortie ); // Vérification du type de fichier if ($result->isVideo()) { echo "Vidéo téléchargée avec succès\n"; } elseif ($result->isAudio()) { echo "Audio téléchargé avec succès\n"; } } catch (YtbDwException $e) { echo "Erreur: " . $e->getFriendlyMessage() . "\n"; }
📊 Classes et méthodes
YtbDwClient
Méthodes principales
| Méthode | Description | Paramètres |
|---|---|---|
getVideoInfo($url) |
Récupère les métadonnées | URL YouTube |
downloadAudio($url, $quality, $output) |
Télécharge l'audio | URL, qualité (opt.), fichier (opt.) |
downloadVideo($url, $quality, $output) |
Télécharge la vidéo | URL, qualité (opt.), fichier (opt.) |
download($url, $format, $quality, $output) |
Téléchargement générique | URL, format, qualité (opt.), fichier (opt.) |
YtbDwVideoInfo
Propriétés accessibles
$videoInfo->getTitle(); // Titre de la vidéo $videoInfo->getDuration(); // Durée $videoInfo->getUploader(); // Nom de l'auteur $videoInfo->getFormats(); // Formats disponibles $videoInfo->hasAudioFormats(); // Formats audio disponibles? $videoInfo->hasVideoFormats(); // Formats vidéo disponibles? $videoInfo->getRawData(); // Données brutes
YtbDwDownloadResult
Informations sur le téléchargement
$result->getFilePath(); // Chemin du fichier $result->getFileSize(); // Taille en bytes $result->getFileSizeFormatted(); // Taille formatée (ex: "15.2 MB") $result->getFormat(); // Format ('audio' ou 'video') $result->isAudio(); // Est un fichier audio? $result->isVideo(); // Est un fichier vidéo?
⚠️ Gestion d'erreurs
Le SDK utilise des exceptions personnalisées avec des messages conviviaux :
try { $result = $client->downloadVideo($url); } catch (YtbDwException $e) { $errorCode = $e->getCode(); switch ($errorCode) { case 400: echo "Paramètres invalides"; break; case 401: echo "Clé API invalide"; break; case 403: echo "Quota dépassé"; break; case 404: echo "Vidéo non trouvée"; break; case 429: echo "Trop de requêtes"; break; default: echo "Erreur: " . $e->getFriendlyMessage(); } }
🔧 Qualités supportées
Audio
128kbps- Qualité standard192kbps- Bonne qualité320kbps- Haute qualité
Vidéo
360- Résolution 360p480- Résolution 480p720- Résolution 720p HD1080- Résolution 1080p Full HD
📝 Exemple complet
<?php require_once 'YtbDwClient.php'; use YtbDw\YtbDwClient; use YtbDw\YtbDwException; try { // Initialisation $client = new YtbDwClient('ytb-dw-votre-cle-api'); $youtubeUrl = 'https://youtube.com/watch?v=dQw4w9WgXcQ'; // 1. Récupération des informations echo "📋 Récupération des informations...\n"; $videoInfo = $client->getVideoInfo($youtubeUrl); echo "🎬 Titre: " . $videoInfo->getTitle() . "\n"; echo "⏱️ Durée: " . $videoInfo->getDuration() . "\n"; echo "👤 Auteur: " . $videoInfo->getUploader() . "\n\n"; // 2. Téléchargement audio if ($videoInfo->hasAudioFormats()) { echo "🎵 Téléchargement audio...\n"; $audioResult = $client->downloadAudio($youtubeUrl, '192kbps'); echo "✅ Audio sauvé: " . $audioResult->getFilePath(); echo " (" . $audioResult->getFileSizeFormatted() . ")\n\n"; } // 3. Téléchargement vidéo if ($videoInfo->hasVideoFormats()) { echo "🎥 Téléchargement vidéo...\n"; $videoResult = $client->downloadVideo($youtubeUrl, '720'); echo "✅ Vidéo sauvée: " . $videoResult->getFilePath(); echo " (" . $videoResult->getFileSizeFormatted() . ")\n"; } echo "\n🎉 Téléchargements terminés avec succès!\n"; } catch (YtbDwException $e) { echo "❌ Erreur API: " . $e->getFriendlyMessage() . "\n"; } catch (Exception $e) { echo "❌ Erreur système: " . $e->getMessage() . "\n"; } ?>
🚦 Limites et recommandations
Limites de l'API
- Quota quotidien : Varie selon votre plan d'abonnement
- Taille maximale : Dépend de votre compte
- Timeout : 30 secondes par défaut (configurable)
Bonnes pratiques
- ✅ Toujours gérer les exceptions
- ✅ Vérifier les informations avant téléchargement
- ✅ Utiliser des timeouts appropriés pour les gros fichiers
- ✅ Respecter les droits d'auteur et conditions d'utilisation de YouTube
- ❌ Ne pas abuser de l'API (respecter les quotas)
🔒 Sécurité
- Clé API : Ne jamais exposer votre clé API dans le code source public
- Variables d'environnement : Utilisez des fichiers
.envou variables d'environnement - HTTPS : Toutes les requêtes sont chiffrées via HTTPS
// Bonne pratique : utiliser les variables d'environnement $apiKey = $_ENV['YTBDW_API_KEY'] ?? getenv('YTBDW_API_KEY'); $client = new YtbDwClient($apiKey);
🆘 Support et contribution
Signaler un bug
- Ouvrez une issue sur GitHub
- Décrivez le problème avec un exemple de code
Contribuer
- Fork le projet
- Créez une branche pour votre fonctionnalité
- Committez vos changements
- Ouvrez une Pull Request
Support commercial
Pour un support premium, contactez-nous à : support@ytbdw.com
📄 Licence
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
🔗 Liens utiles
⚖️ Avertissement légal : Ce SDK est destiné à un usage personnel et éducatif. Respectez les conditions d'utilisation de YouTube et les droits d'auteur. L'utilisation commerciale nécessite une licence appropriée.