Comment est né le programme YouTube-DL

Comme vous le savez, pour le moment, le dépôt youtube-dl sur GitHub est bloqué par une requête DMCA de la RIAA. Bien que je ne puisse pas commenter les projets actuels des responsables ou les discussions en cours, mais après les accusations portées par la RIAA, j'ai pensé qu'il serait utile pour moi en tant que créateur du programme et premier responsable de parler des premières années de youtube-dl.



Collecteurs de cuivre



Dans toute bonne histoire, il doit y avoir un méchant, et en tant que tel personnage, j'ai décidé de choisir des collectionneurs de cuivre - des voleurs qui collectaient des métaux non ferreux dans la région. Ce sont eux qui ont incité la création de youtube-dl. En 2006, mon village était situé à 5-10 kilomètres de la petite ville d' Aviles dans le nord de l'Espagne. Les résidents d'Aviles ont bénéficié d'une bonne infrastructure et de bons services, notamment la télévision par câble et l'accès Internet ADSL. Il n'y avait rien de tel dans ma région: trop loin d'un central téléphonique ADSL, et des collecteurs de cuivre pendant des années ont volé des fils de cuivre sur le chemin, provoquant parfois des interruptions de la connexion téléphonique et obligeant la compagnie de téléphone à remplacer ces fils par des fils plus faibles et plus minces, car elles aussi risquent d’être volées. Cela a duré plusieurs années.



Le seul moyen de se connecter à domicile était un modem 56k V.90 . En fait, la qualité de la connexion était si mauvaise qu'il était nécessaire de réduire la vitesse à 33,6 kbps pour la stabilité. Les vitesses de téléchargement réelles dépassaient rarement 4 Ko / s. Dans le même temps, un service vidéo intéressant YouTube est apparu sur Internet, il gagnait rapidement en popularité et, à la fin de la même année, il a été acheté par Google.



Reste debout toute la nuit pour regarder un morceau



Regarder une vidéo YouTube sur une connexion 33,6 Kbps était une expérience atroce. Presque toutes les vidéos ont pris une éternité à télécharger. Par exemple, il faut 40 minutes pour télécharger une courte vidéo de 10 Mo, ce qui rend la diffusion en continu impossible. Une vidéo plus longue et de meilleure qualité prend plusieurs heures et occupe complètement la chaîne, sans parler du fait que la connexion peut être interrompue à tout moment - et le téléchargement devra recommencer! Imaginez que vous ayez vraiment aimé une vidéo en particulier et que vous vouliez la regarder une deuxième ou une troisième fois. La répétition de ce processus est devenue pratiquement un acte de masochisme.



Dans une telle situation, j'ai commencé à réfléchir aux possibilités de téléchargement de fichiers vidéo: si la vidéo était intéressante, avoir une copie permet de la revoir plusieurs fois plus tard. Et si le programme de téléchargement est vraiment bon, après la connexion interrompue, il pourra reprendre le téléchargement à partir du même endroit!



Il y avait d'autres solutions pour télécharger des vidéos YouTube à l'époque, y compris le script Greasemonkey plutôt populaire... Par pure coïncidence, je n'ai pu personnaliser aucune des solutions existantes pour qu'elles fonctionnent, j'ai donc décidé d'écrire mon propre outil. C'est ainsi que le programme youtube-dl est apparu. C'était plus pratique et plus rapide pour moi de le lancer depuis la console, donc il n'y a pas d'interface graphique. Python a été choisi car il dispose d'une bibliothèque standard étendue, avec pour effet secondaire agréable de fonctionner sur n'importe quelle plate-forme.



Lancement éthéré



La première version ne fonctionnait que sur YouTube. Le programme n'avait pratiquement pas d'architecture normale, car il n'était pas nécessaire. Écrit comme un simple script, il est allé droit au but. La taille du programme est de 223 lignes, avec seulement 143 codes réels, 44 lignes de commentaires et 36 lignes vides. Le nom a été choisi par pure commodité: youtube-dl est évident, compréhensible, difficile à oublier et peut être saisi intuitivement comme «YOU-TAB» dans la console.



Depuis que j'utilise Linux depuis plusieurs années maintenant, j'ai décidé de publier le programme sous une licence libre (MIT dans les premières versions) au cas où quelqu'un le trouverait utile. À l'époque, GitHub n'était pas encore apparu et nous devions nous contenter de SourceForge . Mais là, lors de la création d'un nouveau projet, il fallait remplir un formulaire fastidieux. Donc au lieu de SourceForge, j'ai rapidement posté le code surpage personnelle , qui a été fournie par le fournisseur Internet. Bien que cela semble inhabituel aujourd'hui, les FAI avaient l'habitude de donner aux utilisateurs une adresse e-mail et un hébergement où ils pouvaient télécharger des fichiers via FTP. Ainsi, vous pouvez héberger votre propre site Web personnel sur le Web. La première version du programme a été publiée le 08.08.2006, même si à ce moment-là je l'utilisais depuis plusieurs semaines.



Au cours du processus de développement, il était nécessaire de comprendre le fonctionnement du navigateur Firefox lors du visionnage de vidéos sur YouTube. Si je me souviens bien, Firefox n'a pas encore intégré d'outils de développement pour analyser l'activité du réseau. Les connexions se faisaient principalement via HTTP, donc Wireshark, connu à l'époque sous le nom d'Ethereal, est devenu un outil inestimable pour analyser le trafic réseau. J'ai écrit youtube-dl dans le but spécifique de faire la même chose que le navigateur Web a fait lors de l'extraction d'une vidéo. Le programme a même envoyé la même chaîne de user-agent, copiée textuellement depuis Firefox pour Linux, pour s'assurer que le site enverrait au programme les mêmes pages Web que le navigateur.



En outre, YouTube utilisait le lecteur Adobe Flash à l'époque.... Les vidéos étaient servies sous forme de fichiers Flash Video (FLV), donc un plugin propriétaire était nécessaire pour les visualiser dans un navigateur (beaucoup se souviendront de la redoutable bibliothèque libflashplayer.so), donc tous les outils de développement dans le navigateur étaient inutiles. Ce plugin propriétaire a été une source constante de vulnérabilités et de problèmes de sécurité. J'avais une extension Firefox appelée Flashblock qui empêchait le chargement du contenu par défaut et la remplaçait par des espaces réservés avec une icône cliquable, donc le contenu ne se chargerait qu'à la demande et la bibliothèque de plugins ne serait pas utilisée à moins que l'utilisateur ne le demande.



En plus d'améliorer la sécurité, Flashblock présentait deux autres avantages. Tout d'abord, il a supprimé de nombreuses bannières bruyantes et désagréables, qui pourraient également être une source de problèmes de sécurité. Deuxièmement, cela a facilité l'analyse du processus de chargement de la vidéo dans le lecteur. J'ai attendu que la page se charge complètement, puis j'ai lancé Wireshark juste avant de cliquer sur l'icône Flashblock, pour démarrer le téléchargement de la vidéo. Ainsi, le seul trafic à analyser était lié au plugin chargeant l'application de lecteur vidéo et à l'application elle-même chargeant la vidéo.



Il convient également de noter que le plugin Flash Player à ce moment-là avait déjà téléchargé une copie de la vidéo sur le disque dur (sous Linux, ils étaient stockés dans/tmp), et de nombreux utilisateurs se sont appuyés sur cette fonctionnalité pour faire une copie sans outils supplémentaires. Donc, youtube-dl était plus pratique uniquement parce qu'il extrayait le nom de la vidéo et l'attribuait automatiquement au fichier, par exemple.



Oh, viande fraîche!



Finalement, le Flash Player a été modifié pour rendre les vidéos plus difficiles à extraire . L'une des premières mesures a été de rompre le lien vers le fichier vidéo après sa création, de sorte que l'i-node existe toujours et soit disponible pour le processus qui l'utilise (jusqu'à ce qu'il soit fermé), en gardant le fichier invisible du point de vue du système de fichiers. Il était toujours possible de récupérer un fichier en utilisant le système de fichiers /procpour examiner les descripteurs de fichiers utilisés par le processus du navigateur, mais à chacune de ces petites étapes, youtube-dl devenait de plus en plus pratique.



Comme beaucoup de passionnés d'open source à l'époque, j'ai utilisé Freshmeat pour m'abonner aux nouvelles versions des projets qui m'intéressaient. Lorsque j'ai créé youtube-dl, j'ai également créé un enregistrement de projet sur ce site Web afin que les utilisateurs puissent être informés des nouvelles versions et un journal des modifications répertoriant les nouvelles fonctionnalités, les correctifs et les améliorations. Dans le catalogue Freshmeat, il était possible de rechercher des projets nouveaux et intéressants; les dernières mises à jour étaient publiées sur la première page, généralement plusieurs dizaines par jour. Je suppose que de cette façon Joe Barr (repose en paix), l'éditeur de linux.com , a découvert le programme et a décidé d'écrire un article à ce sujeten 2006. Linux.com était l'une des ressources les plus populaires pour les passionnés de Linux à l'époque, avec d'autres sites classiques comme Slashdot ou Linux Weekly News. Au moins pour moi.



À partir de ce moment, la popularité de youtube-dl a commencé à croître et de temps en temps, j'ai commencé à recevoir des lettres de gratitude pour la création et le soutien du programme.



Comptage du trafic



Avance rapide jusqu'en 2008. La popularité de youtube-dl a continué de croître lentement et les utilisateurs ont souvent demandé à créer des programmes similaires à télécharger à partir d'autres sites, et j'ai cédé à plusieurs reprises à cette demande. C'est à ce stade que j'ai décidé de réécrire le programme à partir de zéro afin de mettre en œuvre le support d'origine pour plusieurs sites vidéo. J'ai eu quelques idées simples sur la façon de diviser les éléments internes du programme en plusieurs parties afin de simplifier les parties les plus importantes: un chargeur de fichiers séparé, commun à tous les sites Web, et séparément - des extracteurs d'informations: des objets (classes) qui contiennent du code spécifique à un particulier site vidéo. Lorsqu'une URL ou une pseudo-URL est donnée, les extracteurs sont invités à découvrir lequel peut gérer ce type d'URL, puis il est demandé d'extraire des informations sur cette vidéo ou cette liste de vidéos,dans le but principal d'obtenir une URL de vidéo ou une liste d'URL avec des formats disponibles ainsi que d'autres métadonnées comme des titres comme.



J'en ai également profité pour changer le système de contrôle de version et déplacer le projet vers un autre hébergement. À l'époque, Git gagnait la guerre du contrôle de version distribué, mais Mercurial comptait également de nombreux utilisateurs. J'ai testé les deux et j'ai décidé que j'aime un peu plus Mercurial que Git. J'ai commencé à l'utiliser pour youtube-dl et j'ai posté le projet sur Bitbucketce qui était un choix naturel. À l'époque, Bitbucket n'hébergeait que des référentiels Mercurial et GitHub hébergeait uniquement Git. Les deux ont été lancés en 2008 et sont une bouffée d'air frais par rapport à SourceForge. Différents espaces de noms de projet pour chaque utilisateur (c'est-à-dire que le nom de votre projet ne doit pas être unique au monde, mais unique uniquement pour vos projets) avec des systèmes de contrôle de version distribués signifient que vous pouvez publier vos projets personnels en quelques minutes sur l'un des deux sites ... Quoi qu'il en soit, le déplacement de l'historique du projet vers Git et le déplacement du projet vers GitHub ont suivi quelques années plus tard .



Lors de la réécriture du projet, j'aurais sans doute dû saisir l'occasion et le renommer, mais je ne voulais pas confondre les utilisateurs existants et laisser le nom pour tenter de garder le programme un peu populaire.



Le contexte technologique a également légèrement changé cette année-là. Les plans de données mobiles ont commencé à gagner du terrain, et à la fin de cette année, je me suis acheté un modem 3G et un plan de données qui me permettaient de surfer sur le Web à une vitesse décente pour la première fois. Quoi qu'il en soit, cela ne m'a pas empêché d'utiliser youtube-dl. J'ai payé 45 euros par mois, mais la limite mensuelle de données était limitée à 5 Go, ce qui signifie que je ne pouvais utiliser qu'environ 150 Mo par jour en moyenne. Et la vitesse vous permettait de télécharger beaucoup plus, vous deviez donc surveiller le trafic et sélectionner le contenu de manière sélective, en évitant si possible les gros téléchargements. Par conséquent, youtube-dl a beaucoup aidé à empêcher les téléchargements multiples de fichiers vidéo volumineux et à respecter le plan tarifaire.



Episode: Nouvelle maison



Quelque temps plus tard, fin 2009, j'ai déménagé et j'ai finalement commencé à vivre avec ma petite amie (maintenant ma femme et mère de deux enfants) à Aviles. Pour la première fois, j'avais accès à Internet haute vitesse, qui est la norme pour beaucoup de mes amis et de ma famille depuis des années. Je me souviens que c'était une connexion par câble 100/10 Mbps (téléchargement / téléchargement) sans limitation de trafic. Cela a définitivement marqué un tournant dans la fréquence à laquelle j'ai utilisé youtube-dl et dans l'attention que j'ai accordée au projet.



Plus tard, j'ai finalement porté le code sur Git et GitHub. À cette époque, YouTube a commencé à expérimenter la vidéo HTML5, qui deviendrait la vidéo par défaut vers 2015. En 2011, j'ai travaillé à temps plein pendant plusieurs années en tant qu'ingénieur logiciel, et en général, au retour du travail, je n'avais pas vraiment envie de programmer et de personnaliser youtube-dl ou d'implémenter, à la demande des utilisateurs, une fonction que je n'allais pas moi-même utiliser personnellement.



Au second semestre 2011, au milieu d'un autre projet important, j'ai décidé de quitter le poste de mainteneur de youtube-dl, car je n'avais pas pu faire face à la tâche depuis plusieurs mois. Philip Hagemeisters'est avéré être un excellent programmeur, et il a soumis plusieurs demandes d'extraction à GitHub avec des correctifs qui intéressaient beaucoup de gens. Je lui ai donné accès aux commits de mon dépôt youtube-dl, et c'était essentiellement la fin de l'histoire de ma part. Les journaux en amont me montrent un flux continu de commits jusqu'en mars 2011, puis un saut en août 2011 avec une fusion de Philip. J'ai fait depuis le commettras seulement en 2013 pour un changement dans le rg3.github.com code source à rg3.github.io lorsque GitHub déplacé des pages personnalisées de USERNAME.github.com à USERNAME.github.io pour éviter les problèmes de sécurité avec code malveillant sur son propre domaine, si je me souviens bien.



Bien que je n'ai pas participé au développement de youtube-dl, pendant de nombreuses années, la page officielle du projet était toujours sous mon compte sur https://github.com/rg3/youtube-dlet https://rg3.github.io/youtube-dl/. J'avais besoin de me présenter lorsque Philippe ou d'autres responsables ont demandé à donner accès aux commits à des développeurs supplémentaires, tels que Filippo Valsorda ou Sergey M. , l'un des responsables actuels. Malheureusement, en 2019, il y avait un petit problème avec les trolls dans le tracker, et seuls les propriétaires de projet sont autorisés à bloquer les utilisateurs. Cela nous a finalement amenés à déplacer le projet vers l'organisation GitHub, où tous ceux qui avaient accès aux commits étaient invités (bien que tout le monde ne les rejoigne pas). L'organisation de GitHub permettait aux mainteneurs d'agir plus librement, sans me tirer à la moindre provocation.



Je voudrais encore une fois exprimer ma plus sincère gratitude aux différents responsables du projet au fil des ans qui ont considérablement amélioré le code, ont pu créer une véritable communauté autour et qui ont rendu le projet beaucoup plus populaire qu'il ne l'était lorsque je suis parti il ​​y a près de 10 ans.



Hors ligne et gratuit



Je tiens à noter une fois de plus que l'objectif de youtube-dl en tant qu'outil n'a pratiquement pas changé au cours des 14 années de son existence. Avant et après avoir reçu la lettre DMCA de la RIAA, beaucoup ont expliqué comment ils utilisent youtube-dl à des fins différentes .



Pour moi, cela a toujours été un accès hors ligne à des vidéos déjà accessibles au grand public sur Internet. Dans le monde des réseaux mobiles et de la connectivité permanente, vous pourriez vous demander si c'est vraiment nécessaire. Je pense que oui, si Netflix, Amazon, Disney et HBO ont implémenté des fonctionnalités similaires dans leurs applications de streaming extrêmement populaires. Pour les longs voyages en voiture ou les voyages à l'étranger, en particulier avec des enfants, ou en métro, ou en avion, ou dans un endroit avec des connexions médiocres ou limitées, il est incroyablement pratique d'avoir un accès hors ligne à un podcast, une conférence, une critique, des actualités ou des illustrations.



Un autre effet secondaire de youtube-dl est l'accès au contenu lorsque l'interface en ligne n'est pas à la hauteur de la tâche. L'ancien plugin Flash propriétaire ne fonctionnait pas pour toutes les plates-formes et architectures. Actuellement, les navigateurs peuvent lire des vidéos, mais ne parviennent parfois pas à tirer parti du décodage GPU efficace et gaspillent beaucoup d'énergie de la batterie. Youtube-dl peut être utilisé avec son propre lecteur pour rendre certaines vidéos lisibles et / ou efficaces. Par exemple, le lecteur mpv inclut la prise en charge intégrée de youtube-dl. Il vous suffit de lui transmettre l'URL et il utilise youtube-dl pour accéder au flux vidéo et le lire sans rien enregistrer sur votre disque dur.



L'interface en ligne par défaut peut ne pas avoir de fonctionnalités d'accessibilité dont certaines personnes ont besoin pour naviguer, ni de filtres de couleur pour les daltoniens, encore disponibles à partir de l'application de lecteur vidéo native.



Enfin, des outils comme youtube-dl vous permettent d'accéder à des vidéos en ligne en utilisant uniquement un logiciel gratuit. Je comprends qu'il n'y a pas autant de partisans de logiciels strictement libres et open source dans le monde. Je ne me considère même pas comme tel, dans l'ensemble. Les logiciels propriétaires sont constamment présents dans notre vie moderne et nous sont livrés chaque jour sous la forme d'une énorme quantité de lignes Javascript dans le navigateur, avec de nombreux objectifs différents et pas toujours dans le meilleur intérêt des utilisateurs. La preuve est l'émergence du RGPD, avec tous ses défauts et problèmes. L'accès aux vidéos en ligne avec youtube-dl vous garantit une totale tranquillité d'esprit incognito là où uBlock Origin ou Privacy Badger apaisent à peine.



All Articles