Podcast hören mit GNU/Linux u.ä.


Ich bin Pendler und pro Tag mindestens eine Stunde unterwegs. Da ich die Radiomucke morgens meist nicht ertrage, habe ich immer einen mit Wortbeiträgen gefüllten Audioabspieler ("MP3-Player") dabei. Um ihn zu füllen, stecke ich ihn des Morgens in den PC, starte ein Skript, frühstücke und danach ist der mit diversen erbaulichen Hörstücken gefüllt. Die Installation geht so (reine Konsole, Debian 4, Linuxkern 2.6.23, der Audioabspieler muß sich als USB-Massenspeicher ansprechen lassen können, was aber wohl nicht bei allen der Fall ist(ext.Link)).

hpodder(ext.Link) installieren

Das freie Konsolenprogramm "hpodder" lädt Podcast-Feeds runter, guckt nach, ob dadrin neue Audiodateien angekündigt sind, die von ihm noch nicht runtergeladen wurden. Die lädt er dann in ein beliebiges Verzeichnis runter (bei mir ist das /var/local/krach/podcast).
Installiert wird hpodder unter Debian-artigen Systemen wie üblich mit

     apt-get install hpodder

hpodder einrichten

Zum Einrichten rufe man hpodder ohne Argumente auf:

     hpodder
Dann fragt er u.a. nach dem o.g. Datenverzeichnis.

Feeds hinzufügen

Die Feeds kriegt man überall im Netz um die Ohren geschmissen. Einige wdr-lastige Beispiele:

  Zeitzeichen            - http://www.wdr5.de/podcast/zeitzeichen_im_wdr_5_radio_zum_mitnehmen_xml.phtml
  Horst Evers            - http://evers.podspot.de/rss
  Comedy-Six-Pack im WDR - http://podcast.wdr.de/radio/sixpack.xml
  Die Von der Leyens     - http://podcast.wdr.de/radio/vonderleyens.xml
  Scala-Kinotipp         - http://podcast.wdr.de/radio/kino.xml
  Auf ein Wort           - http://podcast.wdr.de/radio/aufeinwort.xml
  Der satirische Wochenrückblick von Peter Zudeick - http://www.wdr5.de/podcast/wdr_5_-_radio_zum_mitnehmen_der_wochenrueckblick_xml.phtml
  bel étage - der Medien-Podcast des Handelsblattes - http://www.handelsblatt.com/rss/beletage.xml
Die gewünschten Casts fügt man nun einzeln zu hpodder hinzu:
   hpodder add http://www.wdr5.de/podcast/zeitzeichen_im_wdr_5_radio_zum_mitnehmen_xml.phtml
   hpodder add http://www.handelsblatt.com/rss/beletage.xml
   ...
Mit
   hpodder lscasts

guckt man nach, welche Cast hpodder schon kennt:

   ID   Pnd/Tot Title
   5      0/ 26 Auf ein Wort im  WDR 4-Radio zum Mitnehmen
   9      0/ 16 Das Comedy-Six-Pack im WDR 2 Radio zum Mitnehmen
   10     0/ 15 Der satirische Wochenrückblick von Peter Zudeick im WDR 5-Radio zum Mitnehmen
   8      0/ 19 Die Von der Leyens im WDR 2 Radio zum Mitnehmen
   3      0/ 32 Horst Evers - Podcast
   2      0/ 15 Kabarett im WDR 2-Radio zum Mitnehmen
   16     0/ 30 Leo To Go im WDR 5-Radio zum Mitnehmen
   6      0/ 16 Scala Kinotipp im WDR 5-Radio zum Mitnehmen
   15     0/  8 Töne, Texte, Bilder - Das Medienmagazin im WDR 5-Radio zum Mitnehmen
   11     0/ 17 WDR 2 Kompakt - das Wichtigste vom Tage
   1      0/ 45 Zeitzeichen im WDR Radio zum Mitnehmen
   13     0/ 17 Zwischenruf im WDR 3-Radio zum Mitnehmen
   14     0/ 11 bel étage - der Medien-Podcast des Handelsblattes
   4      0/ 85 dradio-Interviews
   7      0/ 44 dradio-Kalenderblatt
   12     0/  0 dradio-Kolumne
   18     0/ 30 dradio-Mediengespräch
   17     0/ 30 dradio-Tacheles
   19     0/231 kicker online: Podcast

Ähnlich wie bei apt-get macht man

   hpodder update
um die Feeds neu runterzuladen. Das geht recht flott, dann das sind ja nur ein paar relativ kleine Textdateien.

Ein

   hpodder download
lädt dann die noch nicht vorhandenen Audiodateien in das o.g. Datenverzeichnis.

Bei neuen Casts sollte man noch ein

   hpodder catchup -n 2 

machen. Dann werden maximal die zwei neuesten Episoden des Casts geladen. Ansonsten lädt man beim ersten Mal alle Episoden des Casts runter. Das sind z.B. beim WDR-Zeitzeichen 30 Episoden á 15 Minuten, also rund 200 MB. Das will man nicht unbedingt.

Audioabspieler mounten

Wenn man ein USB-Gerät anschliesst, kriegt es vom Kernel dynamisch eine Gerätedatei zugewiesen. Üblicherweise ist das eine SCSI-Emulation wie /dev/sdd1. So mountet man diese:

   mkdir -p /mnt/audiospieler
   mount -t vfat /dev/sdd1 /mnt/audiospieler

Blöd ist nur, wenn man manchmal weitere USB-Geräte wie externe Platten dran hat. Dann ist der Audioabspieler eben nicht auf /dev/sdd1, sondern woanders z.B. auf /dev/sdf1 dran. Normalerweise kein Problem, denn man kann per /etc/fstab auch über Label mounten. So gibt es für Massenspeicher immer die Möglichkeit einen Label zu setzen. Für ext2, ext3 - Partitionen gibt

   tune2fs -l /dev/sdd1

den Namen aus, und mit

   tune2fs -L neuerName /dev/sdd1

wird der Label neu gesetzt. Trägt man in /etc/fstab eine Zeile wie

   LABEL=neuerName  /mnt/audiospieler ext3    rw,user     0       0

ein, ist danach das mounten per

   mount /mnt/audiospieler

einfach.
Blöd nur, wenn das für Audioabspieler nicht geht, weil sie VFAT als Dateisystem haben, oder wie bei mir sich das Label nicht brauchbar ändern lässt.

Aber es geht auch anders. Auf meinem System befinden sich nämlich (vermutlich dank udev) diverse symbolische Links auf alle externen Massenspeicher:

 # ls -R /dev/disk/

  /dev/disk/:
  by-id
  by-label
  by-path
  by-uuid

  /dev/disk/by-id:
  usb-Trekstor_.Beat_xtension_00403054202000000118
  usb-Trekstor_.Beat_xtension_00403054202000000118-part1
  usb-Trekstor_SD.MMC_CARD_00403054202000000118

  /dev/disk/by-label:
  XTENSION_FM

  /dev/disk/by-path:
  pci-0000:00:02.1-usb-0:5:1.0-scsi-0:0:0:0
  pci-0000:00:02.1-usb-0:5:1.0-scsi-0:0:0:1
  pci-0000:00:02.1-usb-0:5:1.0-scsi-0:0:0:0-part1

  /dev/disk/by-uuid:
  1044-CF7C

Das sind alles symbolische Links auf gültige Gerätedateien, also kann man sie für den mount-Befehl verwenden. Ich habe mich für /dev/disk/by-uuid/* entschieden. Welche Datei zu welchem Gerät gehört ist einfach: Beim Einstecken des Gerätes schaut man im Systemlog oder auf der Konsole, welche Gerätedatei zugewiesen wurde:

  ...
  Jan 19 10:02:55 dg9ep kernel:  sdd: sdd1
  Jan 19 10:02:55 dg9ep kernel: sd 49:0:0:0: Attached scsi removable disk sdd
  ...

Und diese sdd1 suche man nun im Verzeichis:

 # ls -Rl /dev/disk/by-uuid/

   /dev/disk/by-uuid/:
   insgesamt 0
   lrwxrwxrwx 1 root root 10 2008-01-19 10:02 1044-CF7C -> ../../sdd1

OK, das war einfach, da war nur eh eine Datei drin, die dann auch passte :). Wir ergänzen also noch schnell die /etc/fstab um eine Zeile:

   /dev/disk/by-uuid/1044-CF7C  /mnt/audiospieler  auto   defaults,noatime  0 0

und fortan können wir den Audioabspieler (und zwar immer genau diesen) auf der Kommandozeile mounten mit:

   mount /mnt/audiospieler

So. Wo waren wir? Ahja:

Das Skript

Jetzt brauchen wir nur noch ein bischen Skript (Geschmacksrichtung bash):

  #!/bin/sh
  #- Gleicht das Verzeichnis, das hpodder füllt, mit dem Audioabspieler ab
  echo mounting ...
  mount /mnt/audiospieler || exit

  echo laden ...
  hpodder update && hpodder download

  echo syncing ...
  rsync -ur --remove-source-files --verbose --progress  /var/local/krach/podcast /mnt/audiospieler/ || exit

  echo unmounting ...
  umount /mnt/audiospieler

und fertig. Das Skript nenne ich podsync, mache es mit chmod ausführbar und lege es unter /usr/local/bin ab.

Exit

Ab jetzt heisst es nur noch: Audioabspieler in eine USB-Buchse reintun. podsync aufrufen, und warten bis das Skript durch ist. Danach Audioabspieler rausziehen (er ist schon umounted) und gut ist.

Den Kram kann man noch erweitern, so daß udev-Regeln dafür sorgen, daß das Skript von selber loslegt, sobald der Audioabspieler in den PC eingesteckt wird.

Wenn man hpodder täglich per cron aufruft, hat man noch einen Zeitvorteil, da podsync dann nicht mehr so viel runterladen muß. Ausserdem hat man dann die Audiodaten schon vorher stationär hören, wenn man will. Ich mach das z.B. über den vdr auf meinem Fernseher. Der Aufruf in der crontab sieht ungefähr so aus:

  hpodder update && hpodder download

Das ganze klappt natürlich auch mit dem freien Audioformat ogg, leider gibt es wenige ogg-Podcasts und auch nicht jede Audioabspielerhardware kann auch ogg abspielen.