Radio Geeky

Sat, 27. Mar 2010

Categories: de sysadmin Tags: Bayern2 cron Debian github iTunes Linux Mitschnitt Podcast Radio RSS Ruby scrAPI Screen Scraping SQLite streamripper Zündfunk

wie schon in einem älteren Artikel angerissen möchte ich zeitgesteuert Radiosendungen aufnehmen – und zwar auf einem Rechner (mit Apache Webserver), der rund um die Uhr läuft.

Nun habe ich kürzlich einem großen Zündfunk-Fan, der selten Zeit hat ihn zu hören, diesen Mitschnitt als Podcast zum Geburtstag geschenkt. Das ganze wurde aufwändiger als ich dachte und setzt sich mittlerweile zusammen aus:

  1. Screen Scraping der B2 Programmwebsite mit scrAPI – incl. Datumskorrektur weil das Programm nicht um Mitternacht umbricht sondern um 5 Uhr früh,
  2. diese Daten in einer SQLite DB cachen um nicht mehrmals am Tag zu scrapen (wenn man z.B. noch andere Sendungen aufnimmt),
  3. per cron einige Minuten vor Sendungsbeginn den streamripper starten (v1.62.3 wegen alter glib auf Debian Linux),
  4. falls der Stream zwischendurch unterbrochen wurde setzen wir die verschiedenen mp3 Dateien zu einer zusammen (ohne Überblendung per Holzhammer: cat)
  5. Sendungsinfos parallel zum mp3 als xml speichern, um nach Aufnahmeende von der DB unabhängig zu sein,
  6. aus allen vorhandenen mp3+xml Paaren ein Podcast RSS bauen und mit gzip packen,
  7. tägliche Gleitlöschung (mp3 älter als 3 Wochen) per cron+find damit die Platte nicht volläuft.

Den Podcast abonniert man schließlich z.B. mit iTunes und bekommt direkt nach der Sendung die frische Zündfunkfolge incl. komplettem Text zur Sendung frei Haus.

Das komplette Ruby Script gibts bei github.