Comment télécharger des vidéos YouTube en PHP pur sans prise de tête
Une histoire bien connue : vous devez ajouter le téléchargement de vidéos à votre projet ou simplement récupérer une URL de flux direct. La première chose qui vient à l'esprit est le bon vieux youtube-dl. Mais les problèmes commencent immédiatement. Vous devez gérer des appels système, maintenir des installations Python dans votre conteneur, et espérer que le binaire ne cassera pas au pire moment possible.
Récemment, je suis tombé sur le dépôt youtube- down-loader du développeur Athlon1600. C'est une tentative de construire une véritable bibliothèque en PHP pur sans dépendances externes ni outils supplémentaires.
Quel est l'intérêt de ce projet
L'auteur le dit clairement : la plupart des bibliothèques PHP pour YouTube sont soit abandonnées depuis cinq ans, soit font simplement appel à des scripts Python. Ce projet adopte une approche différente. Pas d'interpréteurs JavaScript ni d'appels shell. Juste du PHP et des requêtes HTTP standard.
Le projet s'inspire de géants comme yt-dlp, mais adapté aux spécificités des serveurs web. Si vous avez besoin d'intégrer rapidement une fonctionnalité de téléchargement dans une application PHP existante, c'est probablement le chemin le plus simple.
Ce que la bibliothèque peut faire
L'outil couvre les besoins de base auxquels les développeurs font face lorsqu'ils travaillent avec des sites d'hébergement vidéo.
Obtenir des liens directs
Le scénario le plus courant consiste à fournir une URL vidéo et à obtenir une liste des formats disponibles. La bibliothèque renvoie un objet DownloadOptions contenant des liens vers des vidéos de différentes qualités, des pistes audio et des flux combinés.
Le scénario le plus courant consiste à fournir une URL vidéo et à obtenir une liste des formats disponibles. La bibliothèque renvoie un objet DownloadOptions contenant des liens vers des vidéos de différentes qualités, des pistes audio et des flux combinés.
Parfois, vous ne pouvez pas exposer le lien direct à l'utilisateur (par exemple, pour éviter de révéler l'IP de votre serveur ou contourner des restrictions). La bibliothèque dispose d'un YouTubeStreamer intégré qui vous permet de proxifier le flux via votre backend.
Parfois, vous ne pouvez pas exposer le lien direct à l'utilisateur (par exemple, pour éviter de révéler l'IP de votre serveur ou contourner des restrictions). La bibliothèque dispose d'un YouTubeStreamer intégré qui vous permet de proxifier le flux via votre backend.
YouTube n'aime pas l'automatisation. Si une vidéo a des restrictions d'âge ou n'est disponible que pour les utilisateurs autorisés, une requête classique renverra une erreur. La bibliothèque vous permet de fournir un fichier de cookies exporté depuis votre navigateur. C'est une méthode « bidouillée » mais fonctionnelle pour faire croire au service que la requête provient d'une vraie personne.
Au fait, il existe même une méthode consentCookies() qui clique programmatiquement sur le bouton « Accepter » dans les notices de cookies européennes. Une petite chose, mais qui fait gagner du temps lors du débogage.
Comment ça fonctionne en interne
Au lieu d'analyser la page avec des regex (ce qui n'est pas fiable), la bibliothèque essaie d'imiter le comportement du client. Elle analyse les structures de données internes de YouTube, trouve les signatures et décode les liens. Si vous êtes curieux de savoir comment fonctionne réellement le reverse engineering du protocole YouTube, l'auteur a laissé une excellente collection de liens vers des articles et du code source d'autres parseurs dans le README.
Cas d'utilisation pratiques
Où cela peut vraiment être utile :
- Bots Telegram. Si vous écrivez un bot de téléchargement de vidéos, une bibliothèque PHP vous permet d'éviter de spawner des microservices en Python.
- Services d'aperçu. Quand vous avez besoin de récupérer rapidement des métadonnées ou une capture d'écran d'une vidéo sans utiliser l'API YouTube lourde et limitée en débit.
- Archivage de contenu. Créer des copies locales de vidéos importantes pour les besoins internes de l'entreprise.
Cela vaut-il la peine d'être utilisé
Le projet semble actif : les tests passent, les commits arrivent régulièrement (ce qui est critique pour des outils comme celui-ci puisque YouTube modifie constamment son balisage).
Du côté des inconvénients — il y a actuellement un problème avec la vitesse de téléchargement. YouTube limite souvent les requêtes suspectes à 100 kbps. L'auteur le sait et l'a dans sa liste de tâches. De plus, il n'y a pas encore de fusion intégrée de vidéo et audio via ffmpeg, donc si vous avez besoin de la 4K (où l'audio et la vidéo arrivent toujours séparément), vous devrez écrire cette logique vous-même.
Si vous avez besoin d'une solution PHP simple et directe sans surcharge supplémentaire, youtube- down-loader est un excellent candidat pour votre composer.json.
Projets similaires