YouTube-zu-MP3-Frickelei

Die tollste Frau vonne Welt würde gerne Musik von YouTube als MP3 auf dem Rechner speichern. Selbstredend ausschließlich unter freier Lizenz stehende Musik. Am Samstag habe ich mich da mal rangesetzt. Und was gebastelt.

Als erstes habe ich mich bei den Add-Ons für ihren Browser, Firefox, umgeschaut. Die beiden am besten bewerteten Add-Ons zum Thema habe ich mir näher angekuckt. Ein Add-On (dessen Namen ich vergessen habe) hatte in einer Renzension stehen, dass man sich dafür noch irgendwas auf dem Rechner installieren müsste. Das wollte ich nicht. Das andere, „YouTube mp3“, hatte nur ein Problem: Es geht derzeit nicht. Stattdessen kann man eine „Petition“ an Google unterzeichnen, dass sie solche Programme zulassen mögen. Wird die sicherlich sehr bewegen, so eine Petition.

Da ist mir ein Debian-Progamm wieder eingefallen: youtube-dl. Ein Kommandozeilen-Programm zum Herunterladen von YouTube-Inhalten mit der Option zum Konvertieren. In der aktuellen Wheezy-Version… lief auch das nicht. Also auf die Sid-Version aktualisiert, dann ging’s. Nun möchte die tollste Frau vonne Welt sich nicht mit der Kommandozeile herumschlagen. Also habe ich nach einer Einbindungsmöglichkeit mit hohem WAF (Woman Acceptance Factor) gesucht.

Die ersten Versuche habe ich mit einem Script auf dem Desktop unternommen, auf das man die YouTube-Seite ziehen könnte. Leider kam bei dem Script nicht die komplette Adresse an. Keine Ahnung, was ich da schiefgelaufen ist. Google führte mich zu dem Tipp eine „.desktop“-Datei anzulegen und mit einem EXEC-Kommando zu bestücken. Aber da sich KDE nicht so leicht überreden lassen wollte, Dateien mit Punkt am Anfang (bei Linux sind das versteckte Dateien) anzuzeigen, hab ich mich nach anderen Möglichkeiten umgesehen.

Ich hab dann einfach mal alle Pulldown-Menüs von Firefox/Iceweasel durchgesehen. Dabei bin ich auf „Senden an…“ (inzwischen heißt es leider treffender „Link per E-Mail senden…“)  unter „Datei“ gestoßen. Da kann man beliebige ausführbare Dateien angeben, an die der gerade offene Link übergeben wird. Erst, als ich das Script da eingetragen hatte, habe ich festgestellt, dass das eigentlich für Mailprogramme gedacht ist, die Adresse wird als mailto-Link übertragen. Und kodiert („URL-Kodierung“) ist sie auch noch.

Die URL-Dekodier-Skripte, die ich gefunden habe, haben nicht auf Anhieb das getan, was ich wollte. Das dürfte aber an meiner mangelnden Erfahrung in Bash-Scripten liegen. Ich habe dann einfach per cut den relevanten Teil der Adresse, die YouTube-ID, herausgeschnitten und an youtube-dl übergeben. War nur so ein Versuch, aber netterweise begnügt sich das Programm mit der ID.

#!/bin/bash
YOUTUBE_ID=`echo "$1" | sed "s/.*v%3D//" | sed "s/%26.*//" | sed "s/\&.*//"`
youtube-dl --extract-audio --audio-format=mp3 -o "~/Downloads/%(title)s.%(ext)s" "$YOUTUBE_ID"

September 2016: Script flexibler gestaltet

Das ist das Script. Ich habe es unter ~/bin/ abgelegt (/usr/local/bin/ könnte besser sein, wenn mehrere es nutzen wollen), ausführbar gemacht (chmod 700 meinScript) und bei Firefox unter „Senden an“ als neues Ziel eingetragen. Dazu muss der Ordner Downloads existieren (mkdir ~/Downloads oder im Script ein anderes Ziel eintragen), fertig.

Das ganze ist natürlich, wie schon in der Überschrift versprochen, Frickelei. Ich habe eine Funktion missbraucht, die eigentlich zum Versenden der Web-Adresse per E-Mail gedacht ist. Aber ich finde, so integriert es sich gut im Browser. Das Script könnte man viel schöner gestalten. Es schneidet einfach das 57. bis 67. Zeichen der Adresse aus und geht davon aus, dass das die ID des Videos ist. Das muss nicht unbedingt so sein. Gescheige denn so bleiben.

Für Anregungen, wie man das robuster machen kann (sed?), bin ich dankbar!

Nachtrag: Die Lösung hat den WAF-Test mit Bravour bestanden. Die tollste Frau vonne Welt meinte vorher, das ist alles immer so kompliziert, ich sollte ihr das langsam Schritt für Schritt erklären. Als ich ihr gezeigt hatte, wo sie klicken muss, war sie total überrascht, wie einfach das ist. :)

Behutsame Entfrickelung

Vergangenes Wochenende, Anfang September 2013, habe ich mich selbst darangemacht, das Script weniger frickelig zu gestalten. Da die ID nicht immer an der passenden Stelle zu stehen scheint und dann der Download nicht gestartet wird, habe ich mir den Anfang eines sed-Tutorials durchgelesen. Allerdings bis jetzt nur so weit, wie ich es brauchte, um zu einer leicht verbesserten Lösung zu kommen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert