BashJuke - Medienplayer für Linux

Musik aus der Shell                

Das die Linux - Shell vielseitig ist, wissen Administratoren, wie Linuxanwender und sie wissen es immer wieder auf's Neue zu schätzen. Das Automatisieren der sich täglich wiederholenden Routineaufgaben bei der Verwaltung der unterschiedlichsten Linuxserver ist das Paradebeispiel und dafür ist die Shell in erster Linie aus der Taufe gehoben worden. Das sie mehr kann als die Bewältigung der genannten Routineaufgaben, zeigt sich in dem hier beschriebenen Beispiel des Musicstreamers 'BashJuke' den ich in meiner Freizeit
nach und nach weiterentwickelt habe und weiter
entwickeln möchte. Warum heißt BashJuke, BashJuke? Es handelt sich hierbei um ein Shellscript, genau genommen Bashscript und nein, ich bin kein Codenostalgiker, der in der Shell hängengeblieben ist, weil ich nichts mit den Sprachen Python, Ruby oder den Hochsprachen C++, Java und Co. zutun haben möchte, sondern eher einfach nur einen riesen Spass empfinde, in der Shell zu programmieren und Sie zum Prototyping für Versionen in anderen Sprachen zu nutzen. Was finde ich an der Shell denn so toll? Ich mag die Flexibilität und Kompatibilität dieser Programmiersprache. Ja, Sie lesen richtig Programmiersprache! Über viele Jahrzehnte prägt nun schon das Unix-Werkzeugkasten-System durch die Skalierbarkeit, Robustheit und die Zuverlässigkeit die zahlreichen Linuxdistributionen auf der ganzen Welt. Es spielt keine Rolle welche Distribution mit welchem Desktop eingesetzt wird, denn in der Shell fühlt sich ein Linuxer sofort wieder heimisch und spätestens dort ist Linux dann wieder Linux. Ich war noch nie ein Freund davon das Rad immer wieder neu zu erfinden und in der Shell muss ich das auch nicht tun, wenn es nicht um zeitkritische Programmroutinen geht. In einem Shellscript ist es mir immer möglich Linuxkommandos einzubinden oder Software wie z.B. den VLC-Medienplayer zu nutzen, ohne einen Player von Grund auf neu zu schreiben. Ich nutze in einem Shellscript Tools, die eine Aufgabe beherrschen und diese dafür sehr gut. Es ist so möglich, das beste miteinander zu kombinieren, um so ein Stück Software zu entwickeln, das für sich wiederum anstandslos das tut, was ich mir tatsächlich wünsche. BashJuke in der hier vorgestellten Version 0.1.4 ist mit einer auf Zenity basierenden grafischen Benutzeroberfläche ausgestattet, die eine einfache Handhabung der Software ermöglicht. Wie an der Versionsnummer zu erkennen ist, ist BashJuke nicht fertig, sondern an der einen oder anderen Stelle verbesserungswürdig, weshalb es sich hier um ein Hobbyprojekt handelt, das kein Projektende kennt. BashJuke steht für mich in erster Linie als Beispiel für die Vielseitigkeit, die die Shellprogrammierung bietet. BashJuke dient mir persönlich zur Weiterentwicklung in einer Programmierumgebung die mir viel Spass bereitet und nicht zum illegalen Download urheberrechtlich geschützter Werke. Dazu folgender Link. Quelle: Wikipedia (siehe Urheberrecht). Aus meiner Sicht lernt ein Mensch immer dann, wenn er sich mit etwas auseinandersetzt, das für ihn greifbar, also authentisch ist und das ist die Entwicklung von BashJuke für mich. So also ein fortlaufender Lern- und Entwicklungsprozess. Aus diesem Grund möchte ich an dieser Stelle darauf hinweisen, dass ich für den hier im Blog veröffentlichten Code weder irgendeine Haftung übernehme, noch einen reibungslosen Ablauf der Programme garantiere, trotz Tests auf unterschiedlichen Systemen. Nun aber zur Vorstellung der aktuellen Version von BashJuke.

Die Installation

Um Bashjuke nutzen zu können - hier unter Ubuntu 14.04 Trusty Tahr - wird das Programm mit sudo /pfad/./bashJuke_014.sh in der Shell ausgeführt. Die Installationsroutine überprüft, ob die von BashJuke benötigten Softwarepakete auf dem System installiert sind. Ist das nicht der Fall, so führt das Programm die nötigen Installationen durch und erstellt die Dateien und Verzeichnisse die es zur Speicherung der Musikdateien und Streamadressen benötigt.


Paketüberprüfung

Erstellen der Dateien und Verzeichnisse



Desktopverknüpfung unter xfce

Um BashJuke vom Desktop aus zu starten, wird eine Desktopverknüpfung erstellt. Das hier verwendete Logo liegt dem Downloadverzeichnis bei. Verküpfungen auf anderen Linux-Desktops sind ebenfalls möglich, ziehen Sie in diesem Fall die jeweilige Dokumentation hinzu.


Verknüpfung erstellen



Die Verknüpfung

BashJuke in Aktion

Wie Ihnen BashJuke beim Start schon mitteilt, steht diese Software unter der GNU General Public License. Deutschsprachige Informationen erhalten Sie unter dem angegebenen Link. Wenn sie Interesse haben, den Code zu verbessern, zu verändern oder weiterzuentwickeln, würde ich mich darüber freuen, wenn wir zum Austausch in Kontakt treten.


GNU General Public License



Welche Optionen bietet BashJuke gegenwärtig?

Die aktuellen Funktionen von BashJuke werde ich in diesem Beitrag im Einzelnen beschreiben. Im Moment handelt es sich um die im Hauptmenü aufgeführten Optionen. Aufgrund der funktionalen Strukturierung des Codes ist es möglich, BashJuke um weitere nützliche Feature zu erweitern.


Hauptmenü



Ein Album auf youtube anhören

BashJuke ermöglicht es Ihnen ein Musikalbum, das auf den youtube Servern veröffentlicht ist, zu speichern und bei Bedarf jederzeit anzuhören. Zur Ausgabe des Streams dient der Medienplayer VLC. Mit der eingebauten Suchfunktion finden Sie das Album, das Sie in der CSV-Datei abgespeichert haben. Die Datei "soundlist.csv" wird beim erstmaligen Start von BashJuke in der Shell erstellt.


Stream suchen






Wählen Sie aus der sich öffnenden Liste, das Album Ihrer Wahl...


Stream aussuchen


... und hören es sich an.


Stream abspielen





Von nichts kommt nichts

Bevor Sie sich einen youtube Stream anhören können, müssen Sie - wie oben erwähnt - einen Stream in BashJuke speichern. Wählen Sie also im Hauptmenü die Option "Ein youtube Album hinzufügen". Kopieren Sie im Vorfeld auf der Youtubeseite den Streamlink des Albums in der Adressleiste Ihres Browsers und fügen Sie diesen in das Feld "Quelle" ein. Das Feld "Genre" dient auch zur späteren Suche über das jeweilige Genre wie z.B. "Metal, Rock oder Pop", die anderen Angaben sind selbsterklärend.


Streamlink kopieren





Stream zu soundlist.csv hinzufügen



Unterwegs wäre auch nicht schlecht ...

Ein Album, das Sie in BashJuke Live streamen können, möchten Sie vielleicht im Mp3 - Format auch unterwegs auf Ihrem Smartphone oder Mp3-Player hören, ohne eine Internetverbindung aufzubauen. Auch das ist möglich, wenn Sie im Hauptmenü die Option "Ein Album in mp3 speichern" wählen. BashJuke wandelt so das Video Streamformat von youtube in das Mp3 - Format um. Dazu verwendet BashJuke das beim ersten Start im Terminal installierte Paket youtube-dl. Bei allen Downloads ist allerdings immer darauf zu achten, das Sie die Urheberrechte, sowie alle weiteren rechtlichen Rahmenbedingungen der jeweiligen Länder beachten! Wie im obigen Beispiel kopieren Sie den youtube - link aus der Adresszeile Ihres Browsers und geben ihn in das folgende Textfeld ein und bestätigen mit 'ok':


Im Mp3 umwandeln und speichern


Nun erfolgt der Download der Datei in das Verzeichnis 'alben', das sich im Hauptverzeichnis von Bashjuke befindet.





Ist der Download beendet, öffnet sich das Eingabefenster erneut. Geben Sie eine neue Adresse ein um ein weiteres Album zu speichern oder brechen Sie den Vorgang ab. Möchten Sie sich ein gespeichertes Album anhören, so wählen Sie im Hauptmenü die Option "Ein gespeichertes Album anhören". Es öffnet sich ein Fenster in dem Sie das abzuspielende Album in dem Verzeichnis 'alben' auswählen können.


Gespeichertes Album auswählen




Abgespielt wird das Album wieder im VLC-Medienplayer.


Hören was in der Welt so los ist

Wählen Sie im Hauptmenü die Option "Radio hören" so können Sie aus der Sammlung unterschiedlicher Radiostationen, die Sie im Laufe der Zeit angelegt haben wählen. Der Vorteil besteht darin, dass Ihnen nur die Sender zur Verfügung stehen, die Sie auch wirklich hören möchten.


Radiostation wählen


Die Radiostream-Adresse ist nicht mehr aktuell!?

Nicht selten kommt es vor, dass die Streamadresse eines Internet-Radiosenders nicht mehr aktuell ist und es Ihnen dann nicht mehr möglich ist, den Sender ihrer Wahl zu hören. Es gibt Stream-Programme, die als Lösung des Problems, die Aktualisierung der Adressen im Quellcode des Programmes vorsehen. Das funktioniert und ist mit Sicherheit ein Weg zur Behebung des Problems. Jetzt ist es allerdings so, das ein unerfahrener PC-Nutzer nichts oder wenig mit "Sourcen", "Kompilierung" und "make install" anfangen kann. Hier bietet BashJuke die Option "Soundliste bearbeiten" an. Wenn Sie diese Option wählen, öffnet der Editor "Leafpad" die Datei soundlist.csv und Sie haben so die Möglichkeit die im Internet recherchierte Streamadresse des Radiosenders gegen die nicht mehr aktuelle auszutauschen.


Soundliste bearbeiten

Wenn Sie die in "Leafpad" geänderte Datei "soundlist.csv" abspeichern, bevor Sie den Editor schließen, ist es Ihnen wieder möglich den Radiostream zu empfangen. Ebenso können Sie mit den youtube-Streams verfahren.


Und wie bekomme ich den Radiostream in die Soundliste?

Wählen sie im Hauptmenü die Option "Sender hinzufügen". Es öffnet sich der folgende Eingabedialog:


Radiosender hinzufügen


Die Felder "Sender", "Zusatzinfo" und "Jahr" sind optional. Das Feld "Quelle" ist die Streamadresse des Senders. Bestätigen Sie mit "ok" und der Radiosender wird der Datei "soundlist.csv" hinzugefügt.


Aufnehmen wie zu "Mal Sondocks Hitparade" Zeiten

Die etwas älteren unter uns, die Kinder der 80er Jahre, kennen noch die Sendung "Mal Sondocks Hitparade", die bis Ende 1984 immer Mittwochs im Radio zu hören war. Wir saßen mit dem Kassettenrecorder vor dem Radio, immer ein Finger auf "Rec" des Recorders und einen anderen auf "Stop". Wir wollten die neuesten Hits auf Kassette bannen und waren nach der Sendung immer "stolz" auf unsere neuen Musikerrungenschaften. Nun besitzt das Internetradio nicht mehr den Charme und vermittelt auch nicht mehr unbedingt das Feeling von damals, aber auch heute wird noch die ein oder andere Sendung aufgenommen. In die Reihe der digitalen "Kassettenrecorder" reiht sich aber auch BashJuke ein. Möchten sie eine Sendung mitschneiden, so wählen sie im Hauptmenü die Option "Radiostation mitschneiden". Es öffnet sich die Liste mit den zur Verfügung stehenden Radiosendern, die mitgeschnitten werden können.

Sender aufzeichnen

Wählen Sie einen Sender und bestätigen mit "ok", so öffnet sich das Tool "streamripper", das den Stream aufzeichnet und in dem Verzeichnis /mitschnitt unter BashJuke speichert.


Der Streamripper

Mitgeschnittene Dateien in Mp3 konvertieren

So vielfältig wie die Anzahl der Radiosender im Internet ist, so vielfältig sind auch die Audioformate in denen die Sender ihre Streams über die Leitung senden. Unter Linux gibt es einige Audiokonverter, die in der Lage sind die unterschiedlichsten Formate in das gewünschte umzuwandeln. BashJuke nutzt derzeit nur die Möglichkeit das .aac  Format in Mp3 umzuwandeln. Das wird sich in Zukunft im Rahmen der Weiterentwicklung ändern. In diesem Zuge werde ich dann auch meine Kenntnisse in Hinsicht auf die gängigen Audioformate erweitern, womit ich dann auch wieder beim Thema Lerneffekt angelangt bin, den schon ein kleines Projekt wie BashJuke mit sich bringt. Wählen Sie also -wenn es sich bei den Mitschnitten des Radiosenders um .aac Dateien handelt - die Option "Radio-Mitschnitte konvertieren" im Hauptmenü von BashJuke. Es öffnet sich das Fenster mit den Konvertierungsmethoden:



Wählen Sie "aac in mp3", bestätigen mit "ok" und teilen Sie BashJuke das Verzeichnis mit, in dem sich die zu konvertierenden Dateien befinden.




BashJuke konvertiert die .aac Dateien in das Mp3 Format und verschiebt anschließend die Mp3-Files in das Verzeichnis "/konvertierte_dateien" unter BashJuke.


aac in mp3



Verschobene Mp3-Files





Bei jedem Start des Hauptmenüs von BashJuke wird das Verzeichnis mit den zuletzt konvertierten Dateien im Verzeichnis /konvertierte_dateien in das von BashJuke automatisch erstellte Verzeichnis "/samples" verschoben und es werden die lästigen Leerzeichen in den einzelnen Mp3-Files durch Unterstriche ersetzt und es werden runde Klammern - sofern sie existieren - aus den Mp3-Dateinamen entfernt.


Verzeichnis nach "/samples" verschoben







Leerzeichen und Klammern entfernt




Verzeichnis nach jedem Start leer



Das Verzeichnis "/samples" dient dazu die gespeicherten und konvertierten Dateien bei Bedarf zu sortieren und weiterzuverarbeiten.


Anmerkung zum konvertieren der Dateien:

Um noch einmal auf das Unix-Werkzeugkasten-System zurückzukommen. Ein anderer Weg zur Konvertierung von Dateien in Bashjuke wäre die Möglichkeit, das Konvertierungstool "Soundconverter" - das sich in den Ubuntu-Repositories befindet - in BashJuke einzubinden. Auch das stellt wieder ein wunderbares Beispiel für die Skalierbarket unter Linux dar. Man muss eben das Rad nicht immer neu erfinden.

Wer BashJuke testen, erweitern und verbessern möchte, kann ihn sich hier herunterladen.

Bis bald.