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.