ProjekteNerdkrams
In eige­ner Sache: You­Tube – wie schwer kann es schon sein?

Als youtube-dl, ein bekann­tes Werk­zeug zum Off­lin­egucken von lang­wei­li­gem Unsinn, vor zwei Wochen recht­li­che Pro­ble­me bekam, weil die RIAA anschei­nend der Ansicht ist, dass das Besor­gen urhe­ber­recht­lich geschütz­ten Pop­mülls kein legi­ti­mes Nut­zungs­bei­spiel sein soll­te, geriet das Netz wie­der ein­mal in hek­ti­sche Angst, was die Zukunft des Her­un­ter­la­dens betrifft. Ich habe der Situa­ti­on ver­gleichs­wei­se ent­spannt zuge­se­hen, denn mir war etwas aufgefallen:

Die ver­gleichs­wei­se oft genann­te Alter­na­ti­ve you-get teilt mit youtube-dl und vie­len ande­ren Optio­nen das wesent­li­che Pro­blem, dass sie in Python geschrie­ben ist. Python mag en vogue sein, weil es schnel­le Lösun­gen ver­spricht, aber das tat BASIC sei­ner­zeit eben auch – und BASIC war nicht dafür bekannt, vor allem elend lang­sam zu sein. Mehr noch: Nicht sel­ten fand ich auf mei­nen Syste­men nach einem Pythonup­grade man­che Anwen­dungs­soft­ware nicht mehr lauf­fä­hig vor, meist wegen inkom­pa­ti­bler Abhän­gig­kei­ten. Mei­ne letz­te eige­ne Python­soft­ware – die Kuckucks­uhr – ist des­halb inzwi­schen auch in Rust (dazu unten mehr) geschrie­ben. Je mehr Pro­gram­me, die ich ein­set­ze, sta­tisch gelinkt wer­den, desto weni­ger wahr­schein­lich geht nach einem grö­ße­ren Update irgend­was kaputt.

piko sah als Go-Anwen­dung daher inter­es­sant aus, hat von youtube-dl aber die bei­den Designär­ger­nis­se abge­guckt, dass es erstens nicht nur Video‑, son­dern auch Bil­der­platt­for­men unter­stüt­zen will, was die Kom­ple­xi­tät unnö­tig erhöht, und zwei­tens – für mich selbst ganz inter­es­sant – kei­ne ein­heit­li­che Mög­lich­keit anbie­tet, nach dem Down­load nur noch die Audio­da­ten zu behal­ten. Der zusätz­li­che Befehl kann bei häu­fi­ger Nut­zung doch recht lästig werden.

In einem Anflug gei­sti­ger Umnach­tung habe ich daher laut gedacht, so was könn­te ich auch. Lei­der woll­te es dann auch jemand haben. Schade.

Die wesent­li­chen Funk­tio­nen soll­ten fol­gen­de sein:

  1. Kei­ne unnö­ti­gen Spie­le­rei­en. Es sol­len Vide­os (optio­nal: nur die Audio­streams) in der besten ver­füg­ba­ren Qua­li­tät her­un­ter­ge­la­den wer­den kön­nen. Kei­ne Bil­der. Kei­ne GIFs.
  2. Kein Python. Aus Gründen.
  3. Ein­fa­che Erwei­ter­bar­keit. Zwar muss natür­lich You­Tube unter­stützt wer­den, aber spä­te­re Erwei­te­run­gen um ande­re Sei­ten soll­ten so wenig dop­pel­ten Code wie mög­lich erfordern.

Ich habe also yaydl in Rust pro­gram­miert, einer Spra­che, mit der ich – schon wegen des beacht­lich guten cargo-Systems – sowie­so mal mehr machen woll­te als bloß ein biss­chen Text aus­zu­ge­ben. Zwar nut­ze ich in letz­ter Zeit vor allem Go (und Perl), aber das wäre ja kei­ne Her­aus­for­de­rung. Das trait-Kon­zept ist auch recht über­zeu­gend: Um eine wei­te­re Web­site neben You­Tube hin­zu­zu­fü­gen, muss in yaydl nur ein Inter­face mit jeweils sechs Funk­tio­nen imple­men­tiert wer­den. Das soll­te schaff­bar sein.

Über Vor- und Nach­tei­le von Go und Rust, auch gegen­über ande­ren von mir gemoch­ten Spra­chen, möch­te ich an die­ser Stel­le nicht dis­ku­tie­ren, das über­las­se ich irgend­wel­chen Quatsch­blogs, die mit so was ihr Geld ver­die­nen. Statt­des­sen möch­te ich die ein­gangs gestell­te Fra­ge selbst beant­wor­ten: You­Tube macht es einem wirk­lich nicht leicht, Vide­os her­un­ter­zu­la­den, denn direk­te URLs gibt es nicht.

Daher muss man zu einem Video erst die get_video_info-Datei her­un­ter­la­den, dort das JSON-Objekt mit den Video­da­ten her­aus­su­chen und in die­sem in einer undo­ku­men­tier­ten Liste an num­me­rier­ten For­ma­ten das beste her­aus­su­chen und des­sen URL extra­hie­ren. Mei­ne erste Ver­si­on macht genau das, jedoch scheint es emp­foh­len zu sein, aus die­sen vier Schrit­ten (min­de­stens) zwölf zu machen. Ich ver­mu­te, die Macher von You­Tube haben sich etwas dabei gedacht, ich wer­de den Code nach Abklin­gen mei­ner Kopf­schmer­zen mög­li­cher­wei­se ent­spre­chend erweitern.

Immer­hin: Ich begin­ne zu ver­ste­hen, war­um es bis­her so weni­ge gute Alter­na­ti­ven gab.

Senfecke:

  1. Statt­des­sen möch­te ich die ein­gangs gestell­te Fra­ge selbst beant­wor­ten: You­Tube macht es einem wirk­lich nicht leicht, Vide­os her­un­ter­zu­la­den, denn direk­te URLs gibt es nicht.

    Daher muss man zu einem Video erst die get_­vi­deo_­in­fo-Datei her­un­ter­la­den, dort das JSON-Objekt mit den Video­da­ten her­aus­su­chen und in die­sem in einer undo­ku­men­tier­ten Liste an num­me­rier­ten For­ma­ten das beste her­aus­su­chen und des­sen URL extra­hie­ren. Mei­ne erste Ver­si­on macht genau das, jedoch scheint es emp­foh­len zu sein, aus die­sen vier Schrit­ten (min­de­stens) zwölf zu machen. Ich ver­mu­te, die Macher von You­Tube haben sich etwas dabei gedacht, ich wer­de den Code nach Abklin­gen mei­ner Kopf­schmer­zen mög­li­cher­wei­se ent­spre­chend erweitern.
    Na dann auch viel Spaß, beim regel­mä­ßi­gen Rück­wärts-inge­nieu­ren und Nach­pfle­gen, wenn You­Tube wie­der mal klei­ne oder grö­ße­re Ände­run­gen ein­baut. Es hat schon sei­nen Grund, war­um bei you­tube-dl so häu­fi­ge Updates kom­men und ande­re Pro­jek­te kei­nen Bock mehr hatten.

    Immer­hin: Ich begin­ne zu ver­ste­hen, war­um es bis­her so weni­ge gute Alter­na­ti­ven gab.
    Na dann wol­len wir mal hof­fen, dass Du doch bald noch in ein Alter kommst, in dem Du am Anfang dann mal nicht mehr so groß die Klap­pe auf­reißt. Mit Dei­ner „Nur ich allein hab den abso­lu­ten Durchblick“-Attitüde wärst Du übri­gens auch ein per­fek­ter Ver­schwö­rungs­schwurb­ler (btw. wür­de das Dei­nen Ver­mö­gens­ver­hält­nis­sen viel­leicht auch ganz gut tun, so wie es bei den Ande­ren da abgeht…).

    • Mit Dei­ner „Nur ich allein hab den abso­lu­ten Durchblick“-Attitüde wärst Du übri­gens auch ein per­fek­ter Verschwörungsschwurbler

      Was ist los? Ich ver­mis­se noch die Nie-Na-Nazi­vor­wür­fe, weil jemand eine nütz­li­che Soft­ware ver­öf­fent­licht und eine Andeu­tung der Pro­ble­me macht, die er wegen der Down­load­ver­hin­de­rungs­stra­te­gien (von mir auch gern »Tech­nik­ver­hin­de­rung« genannt) von Goo­gles You­Tube hat. Denn ohne die­se Tech­nik­ver­hin­de­rung wäre es wirk­lich kein gro­ßes Pro­blem, son­dern im Ide­al­fall ein Shell­skript um curl.

      Der Lauf­fä­hig­keit von Soft­ware ist die Per­sön­lich­keit des Prog­gers völ­lig egal. Zum Glück! ;)

      Und ich ver­mis­se die Zei­ten damals, als das Inter­net mehr ein Plät­schern als ein jede Ver­nunft und Zurück­hal­tung mit sich rei­ßen­der Strom war; damals, als ich ein­fach ein You­Tube-Video pau­sie­ren konn­te, der Down­load wäh­rend­des­sen wei­ter­ging, so dass ichab war­ten konn­te, bis es kom­plett im loka­len Buf­fer war und es dann ohne Nach­la­de­pau­sen abspie­len konn­te. Na gut, ich ver­mis­se die Zei­ten nicht wirk­lich. Aber so sieht das eben ohne Tech­nik­ver­hin­de­rung aus. Das Pro­blem ist hier eine hirn­los-geschäfts­tüch­tig agie­ren­de Unter­neh­mung, die einer­seits einen Down­load ermög­li­chen muss (damit der »Stream« in den Brow­ser kommt), die ande­rer­seits aber einen Down­load erschwe­ren oder ver­hin­dern will – und dass die­se Unter­neh­mung auch noch sehr will­kür­lich zen­siert und dass wert­vol­le Inhal­te (ich mei­ne damit nicht die Ein­las­sun­gen von Ken­FM und Kon­sor­ten, die gute Klick­brin­ger und Rekla­me­ver­mark­ter für You­Tube sind) aus Bull­shit­grün­den ver­schwin­den, macht die Sache nicht bes­ser. Für mich ist jeden­falls klar, auf wel­cher Sei­te die­ses absur­den Thea­ters das Arsch­loch steht. Ein ziem­lich tech­no­kra­ti­sches Loch ist es…

      • Für mich ist jeden­falls klar, auf wel­cher Sei­te die­ses absur­den Thea­ters das Arsch­loch steht. Ein ziem­lich tech­no­kra­ti­sches Loch ist es…
        Wie bit­te? Ich soll jetzt Teil der gro­ßen You­Tube-Ver­schwö­rung sein oder was?

        Ich kri­ti­sier­te ledig­lich, in wel­chem groß­kot­zi­gen Ton­fall der Autor sich mal wie­der äußer­te und alle ande­ren sinn­ge­mäß als doof und Idio­ten beschimpf­te, und er weiß mal wie­der alles bes­ser, natür­lich auch als Pro­jek­te, die sich ca. 15 Jah­re schon mit dem The­ma herumschlagen.

        Und ich bemerk­te, dass er sei­ne immer zur Schau gestell­te Groß­kotz-Atti­tü­de (zusam­men mit Dun­ning-Kru­ger-Effekt, zu belie­bi­gen The­men) eben mit Ver­schwö­rungs­schwurb­lern gemein­sam hat.

        War­um soll­te ich Etwas gegen sei­ne Eigen­ent­wick­lung haben? Mein Hin­weis ging ledig­lich in die Rich­tung, dass er bes­ser Vie­le bei der Ent­wick­lung um sich scha­ren soll­te (bzw. sich schon exi­stie­ren­den Grup­pen anschlie­ßen soll­te, die auch schon regel­mä­ßig das Rever­se-Engi­nee­ring betrei­ben, etc.), denn als Ein-Mann-Pro­jekt ist es wegen der vie­len und auch umfang­rei­che­ren Ände­run­gen bei den Pro­to­kol­len (die auch mit der Zeit immer kom­ple­xer wur­den, sie­he auch HLS, etc.) der Por­ta­le ziem­lich auf­wän­dig, die Soft­ware funk­ti­ons­fä­hig zu halten.

  2. Also… ich kom­me ziem­lich gut mit SaveFrom.net zurecht. Spricht etwas aus Exper­ten­sicht dagegen?

    • Zu vie­le Tracking­scripts, zu wenig Trans­pa­renz. Ich per­sön­lich mag kei­ne Web­dien­ste. Aber bit­te, wenn’s den Zweck erfüllt?

    • ver­such mal mit sowas wie Save­F­rom zb vr-3D-180/360° vide­os im Equi­rec­tan­gu­lar-for­mat (und vor allem eben nicht als cube-map) in 4K von you­tube zu zie­hen. geht idr nicht mit web­dien­sten. du *weisst*, die sind auf dem you­tube-ser­ver, kommst aber ums ver­recken nicht ran. manch­mal erwischt ne app wie vid­Ma­te die rich­ti­ge webM-fas­sung, aber nor­ma­ler­wei­se bekomm­ste nur die stand­art-mono-fas­sung in max. 1080 angeboten.

      nervt.

  3. Cool von dir, dass du die­se Lern­erfah­rung in dei­nen Blog gepackt hat. Manch­mal muss man es halt erst wirk­lich bau­en um zu sehen war­um etwas kom­pli­ziert ist.

Comments are closed.

https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_smilenew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_biggrin2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_sadnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_eek.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_shocked.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_confusednew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_coolnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_lol.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_madnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_aufsmaul.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_seb_zunge.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_blushnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_frown.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil1.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/icon_mad.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_rolleyesnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_wink2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_idea2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_arrow2.gif 
mehr...
 
 

Erlaubte Tags:
<strong> <em> <pre> <code> <a href="" title=""> <img src="" title="" alt=""> <blockquote> <q> <b> <i> <del> <span style=""> <strike>

Datenschutzhinweis: Deine IP-Adresse wird nicht gespeichert. Details findest du hier.