Wie das youtube-dl Programm geboren wurde

Wie Sie wissen, wird das youtube-dl-Repository auf GitHub derzeit durch eine DMCA-Anfrage der RIAA blockiert . Ich kann mich zwar nicht zu den aktuellen Plänen der Betreuer oder den aktuellen Diskussionen äußern, aber nach den Anschuldigungen der RIAA hielt ich es für nützlich, als Ersteller des Programms und erster Betreuer über die frühen Jahre von youtube-dl zu sprechen.



Kupfersammler



In jeder guten Geschichte muss es einen Bösewicht geben, und als solcher entschied ich mich für Kupfersammler - Diebe, die Nichteisenmetalle in der Gegend sammelten. Sie haben die Schaffung von youtube-dl veranlasst. Im Jahr 2006 lag mein Dorf 5-10 Kilometer von der kleinen Stadt Aviles in Nordspanien entfernt. Die Bewohner von Aviles verfügten über eine gute Infrastruktur und gute Dienstleistungen, darunter Kabelfernsehen und ADSL-Internetzugang. In meiner Gegend gab es nichts Vergleichbares: Zu weit entfernt von einer ADSL-Telefonzentrale stahlen Kupfersammler jahrelang Kupferdrähte auf dem Weg dorthin, was gelegentlich zu Unterbrechungen des Telefondienstes führte und die Telefongesellschaft zwang, diese Drähte durch schwächere und dünnere zu ersetzen, weil Auch sie werden wahrscheinlich gestohlen. Dies dauerte mehrere Jahre.



Die einzige Möglichkeit, von zu Hause aus online zu gehen, war ein 56k V.90-Modem . Tatsächlich war die Verbindungsqualität so schlecht, dass die Geschwindigkeit aus Stabilitätsgründen auf 33,6 Kbit / s reduziert werden musste. Die tatsächliche Download-Geschwindigkeit überschritt selten 4 KB / s. Zur gleichen Zeit erschien ein interessanter Videodienst YouTube im Internet, der schnell an Popularität gewann und Ende desselben Jahres von Google gekauft wurde.



Bleib die ganze Nacht wach, um ein Stück zu sehen



Das Ansehen eines YouTube-Videos über eine 33,6-Kbit / s-Verbindung war eine unerträgliche Erfahrung. Das Herunterladen so ziemlich jedes Videos hat ewig gedauert. Das Herunterladen eines kurzen 10-MB-Videos dauert beispielsweise 40 Minuten, wodurch das Streamen unmöglich wird. Ein längeres Video mit höherer Qualität dauert mehrere Stunden und nimmt den gesamten Kanal ein, ganz zu schweigen von der Tatsache, dass die Verbindung jederzeit unterbrochen werden kann - und der Download muss von vorne beginnen! Stellen Sie sich vor, Sie mochten ein bestimmtes Video wirklich und möchten es ein zweites oder drittes Mal ansehen. Die Wiederholung dieses Prozesses wurde praktisch zu einem Akt des Masochismus.



In einer solchen Situation begann ich über die Möglichkeiten nachzudenken, Videodateien herunterzuladen: Wenn das Video interessant war, können Sie es mit einer Kopie einige Male später überprüfen. Und wenn das Download-Programm wirklich gut ist, kann es nach der unterbrochenen Verbindung den Download von derselben Stelle aus fortsetzen!



Zu dieser Zeit gab es andere Lösungen zum Herunterladen von YouTube-Videos, darunter das beliebte Greasemonkey- Skript... Zufällig konnte ich keine der vorhandenen Lösungen für die Arbeit konfigurieren, daher habe ich beschlossen, mein eigenes Tool zu schreiben. So erschien das Programm youtube-dl. Es war bequemer und schneller für mich, es von der Konsole aus zu starten, daher gibt es keine grafische Oberfläche. Python wurde ausgewählt, weil es über eine umfangreiche Standardbibliothek verfügt, mit dem angenehmen Nebeneffekt, dass es auf jeder Plattform funktioniert.



Ätherischer Start



Die erste Version funktionierte nur auf YouTube. Das Programm hatte praktisch keine normale Architektur, da es nicht benötigt wurde. Als einfaches Skript geschrieben, ging es direkt auf den Punkt. Die Größe des Programms beträgt 223 Zeilen mit nur 143 tatsächlichen Codes, 44 Kommentarzeilen und 36 leeren Zeilen. Der Name wurde aus praktischen Gründen gewählt: youtube-dl ist offensichtlich, verständlich, schwer zu vergessen und kann intuitiv als „YOU-TAB“ in die Konsole eingegeben werden.



Da ich seit einigen Jahren Linux verwende, habe ich beschlossen, das Programm unter einer kostenlosen Lizenz (MIT in den ersten Versionen) zu veröffentlichen, falls jemand es nützlich findet. GitHub war damals noch nicht erschienen und wir mussten uns mit SourceForge begnügen . Aber dort musste man beim Erstellen eines neuen Projekts ein langwieriges Formular ausfüllen. Anstelle von SourceForge habe ich den Code schnell an gepostetpersönliche Seite , die vom Internetprovider zur Verfügung gestellt wurde. Während dies heutzutage ungewöhnlich erscheint, gaben ISPs Benutzern eine E-Mail-Adresse und ein Hosting, über das sie Dateien über FTP hochladen konnten. So können Sie Ihre eigene persönliche Website im Web hosten. Die erste Version des Programms wurde am 08.08.2006 veröffentlicht, obwohl ich es bis dahin seit mehreren Wochen benutze.



Während des Entwicklungsprozesses war es notwendig, die Funktionsweise des Firefox-Browsers zu verstehen, wenn Videos auf YouTube angesehen werden. Wenn ich mich richtig erinnere, hat Firefox noch keine Entwicklungstools zur Analyse der Netzwerkaktivität eingebaut. Die Verbindungen wurden größtenteils über HTTP hergestellt, sodass Wireshark, zu dieser Zeit als Ethereal bekannt, zu einem unschätzbaren Werkzeug für die Analyse des Netzwerkverkehrs wurde. Ich habe youtube-dl mit dem spezifischen Zweck geschrieben, dasselbe zu tun, was der Webbrowser beim Extrahieren eines Videos getan hat. Das Programm hat sogar dieselbe User-Agent-Zeichenfolge gesendet, die wörtlich von Firefox für Linux kopiert wurde, um sicherzustellen, dass die Site dem Programm dieselben Webseiten wie der Browser sendet.



Außerdem hat YouTube damals den Adobe Flash Player verwendet.... Die Videos wurden als Flash Video (FLV) -Dateien bereitgestellt, daher war ein proprietäres Plugin erforderlich, um sie in einem Browser anzuzeigen (viele werden sich an die gefürchtete libflashplayer.so-Bibliothek erinnern), sodass alle Entwicklungstools im Browser nutzlos waren. Dieses proprietäre Plugin war eine ständige Quelle für Sicherheitslücken und -probleme. Ich hatte eine Firefox-Erweiterung namens Flashblock, die das Laden von Inhalten standardmäßig verhinderte und diese durch Platzhalter mit einem anklickbaren Symbol ersetzte, sodass Inhalte nur auf Anfrage geladen wurden und die Plugin-Bibliothek nur verwendet wurde, wenn der Benutzer dies anforderte.



Neben der Verbesserung der Sicherheit hatte Flashblock zwei weitere Vorteile. Erstens wurden viele laute und unangenehme Banner entfernt, was auch zu Sicherheitsproblemen führen kann. Zweitens erleichterte es die Analyse des Prozesses des Ladens von Videos in den Player. Ich habe darauf gewartet, dass die Seite vollständig geladen ist, und dann Wireshark gestartet, bevor ich auf das Flashblock-Symbol geklickt und den Video-Download gestartet habe. Daher war der einzige zu analysierende Datenverkehr mit dem Plugin verbunden, das die Video-Player-Anwendung lädt, und der Anwendung selbst, die das Video lädt.



Es ist auch erwähnenswert, dass das Flash Player-Plugin zu diesem Zeitpunkt bereits eine Kopie des Videos auf die Festplatte hochgeladen hat (unter Linux wurden sie gespeichert)/tmp), und viele Benutzer haben sich auf diese Funktionalität verlassen, um eine Kopie ohne zusätzliche Tools zu erstellen. Youtube-dl war also nur deshalb bequemer, weil es den Namen des Videos extrahierte und es beispielsweise automatisch der Datei zuwies.



Oh, frisches Fleisch!



Letztendlich wurde der Flash Player geändert, um das Extrahieren von Videos zu erschweren . Eine der ersten Maßnahmen bestand darin, die Verknüpfung zur Videodatei nach ihrer Erstellung zu unterbrechen, sodass der i-Node weiterhin vorhanden ist und dem Prozess zur Verfügung steht, der ihn verwendet (bis er geschlossen wird), sodass die Datei aus Sicht des Dateisystems unsichtbar bleibt. Es war immer noch möglich, eine Datei mithilfe des Dateisystems abzurufen /proc, um die vom Browserprozess verwendeten Dateideskriptoren zu untersuchen, aber mit jedem dieser kleinen Schritte wurde youtube-dl immer bequemer.



Wie viele Open-Source-Enthusiasten zu dieser Zeit habe ich Freshmeat verwendet, um neue Versionen von Projekten zu abonnieren, die mich interessierten. Als ich youtube-dl erstellt habe, habe ich auch einen Projektdatensatz auf dieser Website erstellt, damit Benutzer über neue Versionen und ein Änderungsprotokoll informiert werden können, in dem neue Funktionen, Korrekturen und Verbesserungen aufgeführt sind. Im Freshmeat-Katalog konnte nach neuen und interessanten Projekten gesucht werden. Die neuesten Updates wurden auf der ersten Seite veröffentlicht, normalerweise mehrere Dutzend pro Tag. Ich nehme an, dass Joe Barr (Ruhe in Frieden), der Herausgeber von linux.com , auf diese Weise von dem Programm erfahren und beschlossen hat, einen Artikel darüber zu schreibenim Jahr 2006. Linux.com war zu dieser Zeit neben anderen klassischen Websites wie Slashdot oder Linux Weekly News eine der beliebtesten Ressourcen für Linux-Enthusiasten. Zumindest für mich.



Von diesem Moment an begann die Popularität von youtube-dl zu wachsen und von Zeit zu Zeit erhielt ich Dankesbriefe für die Erstellung und Unterstützung des Programms.



Verkehrszählung



Schneller Vorlauf bis 2008. Die Popularität von youtube-dl wuchs langsam weiter und Benutzer baten oft darum, ähnliche Programme zum Herunterladen von anderen Websites zu erstellen, und ich gab dieser Anfrage mehrmals nach. Zu diesem Zeitpunkt habe ich beschlossen, das Programm von Grund auf neu zu schreiben, um die ursprüngliche Unterstützung für mehrere Video-Sites zu implementieren. Ich hatte einige einfache Ideen, wie man die Interna des Programms in mehrere Teile aufteilt, um die wichtigsten Teile zu vereinfachen: einen separaten Dateilader, der allen Websites gemeinsam ist, und separat - Informationsextraktoren: Objekte (Klassen), die bestimmten Code enthalten Video-Site. Wenn eine URL oder Pseudo-URL angegeben wird, werden Extraktoren aufgefordert, herauszufinden, welche mit dieser Art von URL umgehen können, und anschließend Informationen zu diesem Video oder dieser Videoliste zu extrahieren.mit dem Hauptzweck, eine Video-URL oder eine Liste von URLs mit verfügbaren Formaten sowie einige andere Metadaten wie Titel wie zu erhalten.



Ich nutzte auch die Gelegenheit, um das Versionskontrollsystem zu ändern und das Projekt auf ein anderes Hosting zu verschieben. Zu dieser Zeit gewann Git den Krieg der verteilten Versionskontrolle, aber Mercurial hatte auch viele Benutzer. Ich habe beide getestet und festgestellt, dass ich Mercurial etwas mehr mag als Git. Ich habe angefangen, es für youtube-dl zu verwenden und das Projekt auf Bitbucket gepostetDas war eine natürliche Wahl. Zu dieser Zeit hat Bitbucket nur Mercurial-Repositorys gehostet, und GitHub hat nur Git gehostet. Beide wurden 2008 eingeführt und sind im Vergleich zu SourceForge ein Hauch frischer Luft. Unterschiedliche Projektnamespaces für jeden Benutzer (dh Ihr Projektname muss nicht global eindeutig sein, sondern nur für Ihre Projekte eindeutig) mit verteilten Versionskontrollsystemen ermöglichen es Ihnen, Ihre persönlichen Projekte in wenigen Minuten an einem der beiden Standorte zu veröffentlichen ... Wie auch immer, einige Jahre später folgte die Verlagerung des Projektverlaufs auf Git und die Verlagerung des Projekts auf GitHub .



Beim Umschreiben des Projekts hätte ich zweifellos die Gelegenheit nutzen sollen, es umzubenennen, aber ich wollte vorhandene Benutzer nicht verwirren und habe den Namen verlassen, um das Programm ein wenig populär zu halten.



Auch der technologische Kontext hat sich in diesem Jahr leicht verändert. Mobile Datenpläne fingen an, an Bedeutung zu gewinnen, und Ende des Jahres kaufte ich mir ein 3G-Modem und einen Datenplan, mit dem ich zum ersten Mal mit angemessener Geschwindigkeit im Internet surfen konnte. Jedenfalls hat es mich nicht dazu gebracht, youtube-dl zu benutzen. Ich habe 45 € pro Monat bezahlt, aber das monatliche Datenlimit war auf 5 GB begrenzt, was bedeutet, dass ich durchschnittlich nur etwa 150 MB pro Tag verwenden konnte. Dank der Geschwindigkeit konnten Sie viel mehr herunterladen, sodass Sie den Datenverkehr überwachen und Inhalte selektiv auswählen mussten, um große Downloads nach Möglichkeit zu vermeiden. Daher hat youtube-dl viel dazu beigetragen, das mehrfache Herunterladen großer Videodateien zu verhindern und den Tarifplan einzuhalten.



Folge: Neues Zuhause



Einige Zeit später, Ende 2009, zog ich um und begann schließlich mit meiner Freundin (jetzt meine Frau und Mutter von zwei Kindern) in Aviles zu leben. Zum ersten Mal bekam ich Highspeed-Internet, das für viele meiner Freunde und Familie seit vielen Jahren der Standard ist. Ich erinnere mich, dass es sich um eine 100/10-Mbit / s-Kabelverbindung (Download / Upload) ohne Verkehrsbeschränkung handelte. Dies war definitiv ein Wendepunkt darin, wie oft ich youtube-dl verwendet habe und wie viel Aufmerksamkeit ich dem Projekt geschenkt habe.



Später habe ich den Code endlich auf Git und GitHub portiert. Zu dieser Zeit begann YouTube mit HTML5-Videos zu experimentieren, was um 2015 zum Standard werden sollte. Im Jahr 2011 arbeitete ich mehrere Jahre in Vollzeit als Softwareentwickler. Nach meiner Rückkehr von der Arbeit wollte ich youtube-dl im Allgemeinen nicht wirklich programmieren und konfigurieren oder auf Wunsch der Benutzer eine Funktion implementieren, die ich selbst nicht persönlich nutzen würde.



In der zweiten Jahreshälfte 2011, inmitten eines weiteren wichtigen Projekts, entschied ich mich, den Posten des Youtube-DL-Betreuers zu verlassen, da ich die Aufgabe mehrere Monate lang nicht bewältigen konnte. Philip Hagemeistererwies sich als großartiger Programmierer und er übermittelte GitHub mehrere Pull-Anfragen mit Korrekturen, an denen viele Leute interessiert waren. Ich gab ihm Zugriff auf Commits für mein Youtube-DL-Repository, und es war im Wesentlichen das Ende der Geschichte meinerseits. Die vorgelagerten Protokolle zeigen mir einen kontinuierlichen Strom von Commits bis März 2011 und dann einen Sprung bis August 2011 mit einer Zusammenführung von Philip. Ich habe da machte die commit nur im Jahr 2013 für eine Änderung des rg3.github.com Quellcode zu rg3.github.io wenn GitHub benutzerdefinierte Seiten bewegt von USERNAME.github.com zu USERNAME.github.io zu vermeiden Probleme mit der Sicherheit bösartiger Code auf seiner eigenen Domain, wenn ich mich richtig erinnere.



Obwohl ich nicht an der Entwicklung von youtube-dl beteiligt war, war die offizielle Projektseite viele Jahre lang immer noch unter meinem Konto auf https://github.com/rg3/youtube-dlund https://rg3.github.io/youtube-dl/. Ich musste auftauchen, als Philip oder andere Betreuer um Commit-Zugriff für zusätzliche Entwickler wie Filippo Valsorda oder Sergey M. , einen der aktuellen Betreuer , baten . Leider gab es 2019 ein kleines Problem mit Trollen im Tracker, und nur Projektbesitzer dürfen Benutzer blockieren. Dies führte dazu, dass wir das Projekt schließlich in die GitHub-Organisation verlegten, wo alle eingeladen wurden, die Zugriff auf Commits hatten (obwohl nicht alle beitraten). Die Organisation von GitHub ermöglichte es den Betreuern, freier zu handeln, ohne mich bei der geringsten Provokation zu zerren.



Ich möchte mich noch einmal ganz herzlich bei den verschiedenen Projektbetreuern bedanken, die im Laufe der Jahre den Code erheblich verbessert haben, eine echte Community schaffen konnten und das Projekt viel populärer gemacht haben als vor fast 10 Jahren.



Offline und kostenlos



Ich möchte noch einmal darauf hinweisen, dass sich der Zweck von youtube-dl als Tool in den 14 Jahren seines Bestehens praktisch nicht geändert hat. Vor und nach Erhalt des DMCA-Briefes von der RIAA sprachen viele darüber, wie sie youtube-dl für verschiedene Zwecke verwenden .



Für mich war es immer der Offline-Zugriff auf Videos, die der Öffentlichkeit bereits im Internet zur Verfügung stehen. In der Welt der Mobilfunknetze und der ständigen Konnektivität könnten Sie sich fragen, ob dies wirklich notwendig ist. Ich denke schon, wenn Netflix, Amazon, Disney und HBO ähnliche Funktionen in ihren äußerst beliebten Streaming-Apps implementiert haben. Für lange Roadtrips oder Auslandsreisen, insbesondere mit Kindern oder im Untergrund oder in einem Flugzeug oder an einem Ort mit schlechten oder eingeschränkten Verbindungen, ist es unglaublich bequem, offline auf einen Podcast, eine Vorlesung, eine Rezension, Nachrichten oder ein Kunstwerk zuzugreifen.



Ein zusätzlicher Nebeneffekt von youtube-dl ist der Zugriff auf Inhalte, wenn die Online-Oberfläche der Aufgabe nicht gewachsen ist. Das alte proprietäre Flash-Plugin funktionierte nicht für jede Plattform und Architektur. Derzeit können Browser Videos abspielen, nutzen jedoch manchmal die effiziente GPU-Dekodierung nicht und verschwenden viel Batteriestrom. Youtube-dl kann mit einem eigenen Player verwendet werden, um bestimmte Videos abspielbar und / oder effizient zu machen. Zum Beispiel bietet der MPV- Player eine integrierte Unterstützung für youtube-dl. Sie müssen nur die URL an sie übergeben und sie verwendet youtube-dl, um auf den Videostream zuzugreifen und ihn abzuspielen, ohne etwas auf Ihrer Festplatte zu speichern.



Die Standard-Online-Oberfläche verfügt möglicherweise nicht über Eingabehilfen, über die einige Benutzer navigieren müssen, oder über Farbfilter für farbenblinde Personen, die wiederum über die native Video-Player-App verfügbar sind.



Last but not least können Sie mit Tools wie youtube-dl nur mit kostenloser Software auf Online-Videos zugreifen. Ich verstehe, dass es weltweit nicht so viele Befürworter von streng freier und Open-Source-Software gibt. Ich betrachte mich im Großen und Ganzen nicht einmal als solchen. Proprietäre Software ist in unserem modernen Leben ständig präsent und wird uns jeden Tag in Form einer großen Anzahl von Javascript-Zeilen im Browser mit vielen verschiedenen Zwecken und nicht immer im besten Interesse der Benutzer geliefert. Der Beweis ist die Entstehung der DSGVOmit all seinen Mängeln und Problemen. Wenn Sie mit youtube-dl auf Online-Videos zugreifen, können Sie sich inkognito beruhigen, wenn sich uBlock Origin oder Privacy Badger kaum beruhigen.



All Articles