Abgehört :)

Wenn ich mit meinem Fahrrad durch die Gegend strample, höre ich mir auch gern mal ein Hörbuch oder ein Hörspiel an. Zum Glück gibt es außer den privaten und öffentlich-rechtlichen Dudelfunkwellen ja auch noch ein paar Sender, die ab und an mal sowas senden.
In den meisten Fällen liegen die Sendezeiten dann aber so, dass man als arbeitender Mensch keine Chance hat, sie live zu hören. Leider gibt es keinen mir bekannten Sender, bei dem man sich die Sendungen als Podcast auf das Handy laden könnte.
Zusätzlich geben sich die meisten Sender alle Mühe, zu verhindern, dass man den Stream aus dem Internet auf die Platte bannt.
Und so muß man sich eben etwas einfallen lassen, wie man trotzdem an sein Hörspiel kommt…

Variante 1

Seit längerer Zeit bin ich schon im Besitz einer NSLU2, einem kleinen stromsparenden Gerät mit ARM-Prozessor und angeschlossener 1TB-Festplatte.  Eigentlich dient dieses Gerät dazu, USB-Festplatten als Netzwerkspeicher ins lokale Netzwerk zu bringen. Man kann sie mit etwas Knoffhoff aber zu ganz anderen Sachen gebrauchen.

Dazu habe ich das aktuelle Debian (Lenny) auf der NSLU installiert. Das ging nach einer Anleitung im Internet ganz ohne Probleme.  Die NSLU wäre natürlich unterfordert, wenn ich sie rund um die Uhr laufen lassen würde, nur um ab und zu mal ein Hörspiel zu rippen. Deshalb läuft “nebenbei” noch ein Webserver inklusive PHP und MySql. Aber das ist schon wieder ein ganz anderes Thema…

Wie kommt nun das Hörspiel auf die Platte? Ganz einfach.  Die Zeitsteuerung übernimmt at. Damit kann man Befehle zeitgenau, ähnlich wie mit cron starten. Aber während man cron dazu nutzt, bestimmte Jobs zu bestimmten Zeitpunkten immer wieder zu starten, startet man einen Job mit at nur einmalig zu einer bestimmten Zeit.

So starte ich den Streamripper, der das Hörspiel auf die Platte bringt, zeitgenau mit at.  Die Länge der Aufnahme und die Url des Streams  gibt man dem Streamripper als Argument mit. Ist die angegebene Zeit abgelaufen, beendet sich Streamripper und die fertige Datei liegt auf der Platte.  Das wars eigentlich schon.
Es gibt dabei nur ein Problem: Sender, die ihren Stream im Windoofs-Format unters Volk bringen, mag Streamripper nicht. Deshalb gibts

Variante 2.

Die funktioniert (momentan) nur auf meinem Desktop-Rechenknecht. Dort werkelt Ubuntu 8.10. Es hat eine ganze Menge Sucharbeit gekostet, bis ich eine für mich annehmbare Aufnahmelösung gefunden habe. Die funktioniert nicht mit dem Streamripper, sondern mit dem Mplayer. Der kann nämlich nicht nur Musik abspielen, sondern auch auf der Platte speichern. Der Befehl

mplayer ‘mms://url_des_streams’ -ao pcm

speichert die Aufnahme in einer Datei mit dem Namen “audiodump.wav” im aktuellen Verzeichnis. Gestartet wird die Aufnahme wieder wie in Variante 1 mittels at. Allerdings hat die Sache einen Haken. Dem Streamripper kann ich als Argument die Aufnahmedauer beim Aufruf übergeben. Beim Mplayer geht das nicht (oder ich hab es nur nicht gefunden).
Deshalb stoppe ich den Mplayer zum Ende der Sendung mit einem zweiten at-Job. Der startet ein Skript, in dem zuerst der Mplayer ganz brutal mit einem “killall mplayer” abgeschossen wird. Anschließend wandelt lame das aufgezeichnete wav-File ins  mp3-Format.  So kann ich mir das fertige Hörspiel am nächsten Morgen gleich per Bluetooth aufs Handy schieben.

Damit der Rechner nicht die restliche Nacht sinnlos Strom verbraucht, schickt ihn ein dritter at-Job, der diesmal aber mit Root-Rechten läuft, 15 Minuten nach dem Ende der Sendung mit einem “shutdown -h now” schlafen.

Vielleicht kennt ja jemand eine elegantere Lösung. Meine ist vielleicht nicht schön, aber sie funktioniert ganz gut ;-).

Kommentieren ist momentan nicht möglich.