Mein YouTube Terminal Workflow

Fr, 21. Mai 2021, KubikPixel

In diesem Artikel soll es darum gehen, wie ich YouTube so datensparsam wie möglich konsumiere und dies noch in der Konsole. Warum YouTube und kein anderer Video-Dienst? Nun ja, es werden immer noch sehr viele interessante Videos täglich auf dieser Plattform von Google veröffentlicht. PeerTube ist grossartig aber bietet bei weitem (noch) nicht den Content und die Vielfalt von YouTube. Da werden die Einen oder Anderen LBRY und Odysse als Alternativen einwerfen, doch die sind genauso mit Trackern durchsetzt wie der Platzhirsch selber. Des Weiteren ist meiner Meinung nach deren Krypto-Ansatz sowie Geschäftsmodell für mich (noch) undurchsichtig.

Motivation

Soviel erstmal zu meinen Beweggründen für folgendes Vorhaben, nun zur meiner Motivation. Ich bin auch mit der Motivation an dieses Projekt herangegangen, dass ich meinen Medienkonsum auf der Konsole ausüben möchte und dem Tracking sowie dem Bombardement von Werbung ausweichen wollte. Und siehe da, ich war anscheinend nicht der Einzige mit dieser Idee und andere haben dafür schon nützliche Tools geschrieben. Warum also diese nicht verwenden und verketten, um damit einen Workflow im Terminal abzubilden. Des Weiteren sehe ich durch die minimalen Einschränkungen, die dieser konzentrierter Workflow ergibt, auch weniger Ablenkung. Das heisst in meinem Fall, dass man sich nicht im Strudel verliert, der einem vorgesetzt wird. Auch ist dies z.B. für Recherchen nützlich, da man nicht im Rabbit-Hole vom Algorithmus gefangen wird/ist.

Tools

Damit wir möglichst komfortabel unsere Videos ansehen können, benötigen wir ein paar Tools, die unser Leben auf der Konsole erleichtern. Am besten installierst du diese über dein Repo von deiner Linux Distribution. Da dies je nach Distro unterschiedlich ist, gehe ich nicht weiter darauf ein. Ansonsten frage einfach und dir wird bestimmt jemand freundliche Unterstützung bieten.

Das scheinen nun schon einige Tools zu sein, aber dies entspricht der Unix Philosophie, für jede Aufgabe ein Tool, das genau eine Aufgabe erledigt und verkette diese.

Umsetzung

Eines mal vorweg, wenn es dir bis dahin kompliziert erscheint: Ich muss einwenden, das richten wir einmal gemeinsam ein und ab dann kannst du es komfortabel nutzen und wenn nötig nur noch ergänzen. Mit anderen Worten, der Initialaufwand ist vielleicht auf den ersten Blick ein bisschen gross, aber das richtest du einmal ein und dann kannst du das Ganze mühelos nutzen.

Als Erstes installieren wir die oben erwähnten Tools. Wie gesagt machst du das am besten über das Repo von deiner Linux Distribution. Wir schauen uns das aber gemeinsam gleich noch genauer an.

Media Player

Als Erstes installieren wir mpv, ein schlanker und für die Konsole optimierter Media-Player. Auf Debian-/Ubuntu-basierenden Distros z.B. sieht dies in der Konsole dann so aus:

sudo apt-get install mpv

Jetzt ergänzen wir mpv um weitere Funktionen um den Komfort und den Zugriff auf YouTube zu ermöglichen. Wieder stelle ich nur die Variante mit apt (Debian/Ubuntu basierte Distros) vor, aber in anderen Distros funktioniert dies fast genauso.

sudo apt-get install youtube-dl

Nun haben wir den youtube-dl installiert und dieser ermöglicht uns YouTube Videos zu downloaden oder zu streamen. mpv unterstützt das Nutzen von youtube-dl und ist dadurch Streaming-fähig. Anders als es der Name suggerieren mag, ist das Streaming von sehr unterschiedlichen Quellen möglich, auch unter anderem von den Mediatheken der Rechtlich-Öffentlichen Sendern. Machen wir doch gleich mal den Test und geben in der Konsole folgendes ein:

mpv https://www.ardmediathek.de/video/die-sendung-mit-der-maus/zeitreisen-mit-der-maus-xxl-die-10er-jahre/wdr-fernsehen/Y3JpZDovL3dkci5kZS9CZWl0cmFnLTQ1MTEyMzNkLTY5YTItNDc0OC05ZWM0LTE0ODk5MzNkYjRjYg/

Du siehst, der Befehl ist sehr simpel: Erst den Befehl mpv für den Player und dann die URL zum Video (deren Länge ist dem Anbieter ARD geschuldet). Mit der Taste f kannst du zum Vollbild (fullscreen) wechseln. Mit der Taste q (quit) beendest du mpv vorzeitig.

YT-Werbung & -Sponsoren

Wir können nun zwar YouTube und andere Videos streamen und durch das Umgehen der Weboberfläche wird auch nicht die Werbung von YouTube vor, nach und während den Videos hineingeschoben, doch das geht noch besser. Viele Creater lassen sich mittlerweile Sponsern und diese Werbung kann auch unnötig nerven und unnötig Zeit in Anspruch nehmen. Gut, dass es dafür auch eine Lösung gibt und die heisst SponsorBlock. Das ist eigentlich eine Browsererweiterung, die es aber auch als mpv Plugin gibt. Die wollen wir nun installieren doch dazu müssen wir Python 3 sowie Git auf unserem System haben. Wenn du das noch nicht hast so installiere dies jetzt und komme dann wieder hierher zurück.

Das SponsorBlock Script müssen wir in das script Verzeichnis von unserem mpv Konfiguration einfügen. Auf meinem Manjaro Linux sieht dies folgendermassen aus:

git clone https://github.com/po5/mpv_sponsorblock.git ~/.config/mpv/scripts/

Um dieses Script aktuell zu halten, benötigen wir nur den Befehl git pull und die markierten Blöcke werden immer automatisch aktuell aus dem Internet gezogen.

Abos per RSS/Atom Feed

Jetzt haben wir zwar keine nervende Werbung mehr, aber immer noch keine Abos oder Suche im Terminal. Um ein Video mittels mpv ansehen zu können benötigen wir immer noch seine URL und diese wollen wir ja eben nicht auf YouTube suchen.

Gehen wir erst die Channel-Abos an und lassen uns diese mittels Newsboat über den RSS Feed auflisten und anzeigen. Dazu müssen wir Newsboat ein wenig umkonfigurieren, doch das ist kein Hexenwerk. Auch diesmal zeige ich wie ich es auf meinem Manjaro Linux gelöst habe und auch da installieren wir erst Newsboat über das jeweilige Repository:

sudo apt-get install newsboat

Nun nehmen wir die Konfiguration in Angriff und erstellen erst einmal die Abos. Dazu erstellen wir erst mal ein neues File, nachdem wir in das Verzeichnis wechseln cd ~/.newsboat und nennen es schlicht youtube. Nun öffnen wir es in einem beliebigen Texteditor wie nano, vim, micro oder emacs. Wir fügen in diese neue lehre Datei folgendes ein:

https://www.youtube.com/feeds/videos.xml?channel_id=<channel-id> "<kategorie>"

Dies machen wir für jeden zu abonnierenden Channel und ersetzten <channel-id> mit der ID (kryptische Zeichenfolge) und das findest du, wenn du auf YouTube auf die Kanalseite des gewünschten Kanals gehst und in der URL https://www.youtube.com/channel/UCPiI104i7lyG--fkr3LZTtA den letzten Abschnitt nach dem letzten / kopierst, in diesem Fall UCPiI104i7lyG--fkr3LZTtA. Das ist auch das einzige mal, dass du auf YouTube musst und nachher nicht mehr.

Die Kategorie kannst du frei wählen, hier können wir z.B. <kategorie> durch Kino ersetzen, wichtig ist, dass es in doppelten Anführungszeichen steht und ist eigentlich nur für den Export nötig. Am Schluss der Zeile steht noch downloadet und markiert den Feed dazu bei Programmstart diesen zu aktualisieren.

Nun müssen wir nur noch die Konfiguration für die Videowiedergabe ändern und auch nur das werde ich hier beleuchten, Newsboat ist sehr gut konfigurierbar, aber das ist nicht das Thema in diesem Artikel. Gut, gehen wir es an und erstellen wieder eine lehre Textdatei im Verzeichnis ~/newsboat und diese nennen wir nun avconfig für Audio-Video-Konfiguration, doch eigentlich kannst du einen beliebigen Namen ausser config wählen, da dieser als Standard schon vorgegeben ist. Nun editieren wir diese neue Datei wie folgt:

auto-reload yes
browser mpv 

Wir haben den Browser auf den mpv Player gesetzt und das die Feeds sich selber wieder neu laden und wir so immer auf den neusten Stand sind.

Nun können wir Newsboat in der Konsole aufrufen mittels newsboat -u youtube -C avconfig oder wir schreiben gleich ein Alias im .bashrc oder .zshrc oder wo du es benötigst.

alias avnews="newsboat -u ~/.newsboat/youtube -C ~/.newsboat/avconfig"

Sobald du das Terminal neu startest, kannst du mit dem Befehl avnews deine Abos durchsehen. Mit den Pfeiltasten navigierst du durch die Feeds und mit Enter siehst du sie dir an. Videos kannst du mit den Pfeiltasten auswählen, mit Enter deren Beschreibung ansehen und dann durch die Taste o öffnest du mpv und spielst das Video ab. Mit q gehst du immer einen Schritt zurück, bis du Newsboat verlässt.

Videos suchen & finden

Bis jetzt sind wir relativ weit gekommen, doch Videos auf YouTube suchen, ohne dass wir YouTube selber besuchen und so wieder getrackt werden (auch ohne Anmeldung), geht immer noch nicht. Doch auch dafür gibt es eine Lösung, und das ist ytfzf. Wie soll es anders sein, auch den müssen wir erst installieren, doch die wichtigsten Abhängigkeiten haben wir schon über die andern Pakete installiert, außer fzf, jq und Überzug. Installiere diese vorher und dann machen wir hier weiter. ytfzf ist vielleicht noch nicht in deinem Software Repo, deswegen nutzen wir hierzu Git.

git clone https://github.com/pystardust/ytfzf
cd ytfzf
sudo make install

Nun kannst du direkt aus der Konsole heraus auf YouTube suchen und die Videos direkt über mpv ansehen, dazu genügt nur einen einfachen Befehl in der Konsole ytfzf -t Suchbegriff. Die Option -t weißt an die Thumbnails der Videos über Überzug anzuzeigen und alles dahinter ist der Suchbegriff. Klar kannst du ytfzf noch nach deinem Geschmack konfigurieren, lese dazu einfach mehr auf deren Website.

Tracking & IP

Somit hätten wir eigentlich meinen Workflow für YouTube Videos auf dem Terminal durch. Wahrscheinlich hast du noch die Frage, was denn mit dem Tracking und dem Suchalgorithmus auf sich hat. Da kann ich soweit beruhigen, dass YouTube in dieser Form nur deine IP & Suchanfrage sieht, zusätzlich umgehen wir dadurch fast jede Werbung. Die IP kannst du z.B. über ein VPN oder dem Tor-Netzwerk verschleiern. Der Client wird beim ytfzf cURL angezeigt & genutzt. Die Suchanfragen sieht YouTube ganz klar, wie soll es da auch dein gewünschtes Video finden. Du fällst aber nicht in das Rabbit-Hole, da die Suchanfrage nicht mit dem Verlauf in Verbindung gebracht wird. Du kommst nicht in einer Spirale der immer gleichen Thematik.

Tipps & Tricks

Ein paar Tricks sind sicherlich nicht schlecht um noch mehr aus dieser Konfiguration raus zu holen. Da wäre sicherlich einmal in jedem Programm die Konfiguration so anzupassen, dass diese deine eigenen Bedürfnisse entsprechen. Ich habe dies z.B. für mpv folgendermassen gemacht.

Mein Bildschirm am Laptop hat eine Auflösung von 1920x1080 und Videos, die grösser sind machen in meinem Fall keinen Sinn. Also weise ich mpv an über youtube-dl keine Videos zu laden, die eine höhere Auflösung als 1080 Pixel in der Höhe haben, doch ich will die beste zur Verfügung gestellten Audio Qualität.

Auf meinem Manjaro Linux finde ich die Konfigurationsdatei für mpv unter ~/.config/mpv/mpv.conf und in der schreibe ich:

ytdl-format=bestvideo[height<=?1080]+bestaudio/best

So vermeide ich auch, dass mir zu grosse Videos downloade, die der Bildschirmgröße überhängen und ich außerdem zu viel Datentransfer verbrauch ohne wirklich die Daten zu benötigen.

Des Weiteren kann man mit youtoube-dl auch Videos für den offline Betrieb herunterladen, indem man einfach ytfzf -td deine suchbegriffe für video eingibt.

Über MediathekViewWeb kann man auch ohne Tracker nach Videos aus der Mediatheken der deutschsprachigen Rechtlich-Öffentlichen Sendeanstalten suchen und dann lokal über mpv streamen, teilweise umgeht dies sogar das Geofencing.

Alternativen

Jetzt wird sicher die eine oder andere einwerfen, dass es einfachere Lösungen für mehr Datenschutz & Privatsphäre gibt doch ich wollte mit Absicht eine Lösung auf der Konsole. Ich arbeite gerne auf der Konsole und empfinde das zirkeln & klicken eher mühsam. Wie schon oben erwähnt ist das einmalige Einrichten evtl. etwas mühsamer aber danach läuft es ohne weiteres.

Ich zähle mal kurz hier auf, welche Alternativen es sonst noch gibt, damit ihr einen kleinen Überblick habt:

Schlusswort

Ich hoffe einigen von euch da was gezeigt zu haben. Habt ihr noch Verbesserungsvorschläge? Wie schaut ihr eure Videos an und möchtet ihr mehr solche ausführliche Anleitungen und auch mit dem Fokus Konsole & Terminal? Lasst es mich über die Kontaktmöglichkeiten wissen.

Charon
Geschrieben von Charon am 24. Mai 2021

Woow, was alles möglich ist und sehr interessant, wieder was gelernt!

christian
Geschrieben von christian am 22. Mai 2021

Moin,

vielen dank für deine Workflow.

Was ich nicht finde ist den weg zur Kanalseite bei YT für die RSS ID. "wenn du auf YouTube auf die Kanalseite des gewünschten Kanals gehst"

Wenn ich deine URL nehme gelange ich zur Kanalseite, mir ist aber nicht klar wie ich selber bei einem YT Account zu dieser Seite kommen.

Danke im Voraus und Gruß Christian

KubikPixel
Geschrieben von KubikPixel am 22. Mai 2021

Dazu klickst du z.B. auf dem Kanalnamen vom Video und dann erscheint in deinem Browser im URL Feld kannst du dann deren ID auslesen.

christian
Geschrieben von christian am 22. Mai 2021

Das ist mir jetzt etwas peinlich, das habe ich in der tat nicht gefunden.

Vielen dank das du mir das Brett vom Kopf gerissen hast.

Mal am Rande, ich nutze FreeTube und mag es ganz gerne wenn ich grafisch unterwegs bin.

Gruß Christian

KubikPixel
Geschrieben von KubikPixel am 23. Mai 2021

Bitte gerne! Deswegen habe ich dies am Schluss auch noch erwähnt, da reine Konsole ja nicht für alle was ist.

wavirmbnov
Geschrieben von wavirmbnov am 22. Mai 2021

== Hinweis auf RSSbridge und verbleibendes Tracking bzw. == Abhilfe gg. korrupte Feeds dank vorgeschalteter DSVGO Abfrage

Zum Tracking waere zu sagen: es findet natuerlich eingeschränkt immer noch statt: Ip-Adresse und abgerufene Feeds, sowie natuerlich noch interessanter fuer Google und Werbende der eigentliche Videodownload.

Zumindest der Feed liesse sich noch umschrauben auf einen Server, der github.com/RSS-Bridge/rss-bridge laufen laesst. Das Format sieht dann zB so aus:

Server?action=display&bridge=Youtube&context=By+playlist+Id&format=Atom&p=PLAYLISTID

Die Server beschraenken oft die Zahl der Treffer, ferner empfiehlt es sich, zwischen Aufrufen eine kurze Pause von 1-2 Sekunden zu machen. Eine Liste von Server mit rssbridge sehe ich gerade nicht auf github, aber eine Suche nach "rssbridge" "telegram" "twitter" "youtube" ... sollte Kandidaten aufzeigen.

(Dies war fuer meinen rsstail Setup notwendig, da Google/Youtube freundlicherweise seit 1-2 Wochen RSS verkrueppelt mit einem oh so standardkonformen vorangestelltem DSVGO-Abfrageformular).

cu w.

PS: dem herzlichen FuckYou der Autoren von rssbridge an alle "social" Media Plattformen, die wie Youtube Standards wie RSS verstecken, jetzt misshandeln oder gleich ganz neumodisch boykottieren (fuer ein bisschen mehr Werbung), schliesse ich mich natuerlich an!

KubikPixel
Geschrieben von KubikPixel am 22. Mai 2021

Das die IP getrackt werden hatte ich im Beitrag erwähnt und dagegen VPN oder Tor vorgeschlagen, klar kann man auch über einen RSS Proxy gehen, es führen (fast) alle Wege nach Rom.