Site made with: Template Toolkit

News aus dem Web in MP3 umwandeln

Da fahre ich nun Tag für Tag mit dem Auto zur Arbeit und kenne die ganze Strecke schon auswendig. Es wäre doch Klasse, wenn ich während der Fahrt schon mal meine Lieblings News Seiten aus dem Internet anschauen könnte... oder besser anhören. Auf einem der letzten Linux Treffen hat gopher ja angeregt für sowas mal Mbrola auszuprobieren. Ich hab mal eine Mbrola Installation dokumentiert und aufbauend darauf noch ein paar Skripte geschrieben, um mir die News von Freace automatisch in MP3 Files konvertieren zu lassen. Das Ganze kann dann natürlich als Vorlage für andere (noch) podcast-lose Webseiten dienen.

Beispielskripte für Freace

Am besten einfach ein Verzeichnis anlegen, dass die notwendigen 3 Skripte aufnehmen kann.

freace.sh

#!/bin/sh
cd `dirname $0`
touch freace.log
curl -s http://www.freace.de/ \
  | ./freace-summary.pl \
  | head -8 \
  | while read url; do
      artikel=`basename $url .html`
      url="http://www.freace.de/$url"
      if ! grep "$url" freace.log > /dev/null; then
        # echo "fetching $url"
        lynx -dump -nolist $url | ./freace-artikel.pl > artikel.txt
        title=`head -1 artikel.txt`
        # echo "title: $title"
        txt2mp3 artikel.txt "$artikel.mp3" "$title" "Freace"
        echo $url >> freace.log
        rm -f artikel.txt
      fi
    done
cat freace.log | tail -200 > freace.tmp
mv freace.tmp freace.log

freace-summary.pl

#!/usr/bin/perl
while (<>)
{
  if (/\<a href=\"(artikel[^\"]+)\"[^\>]*\>([^\<]+)\<\/a\>/)
  {
    printf("%s\n", $1);
  }
}
exit 0;

freace-artikel.pl

#!/usr/bin/perl
while (<>)
{
  chomp;
  s/^\s+//;
  s/\s+$//;
  next if (length($_) == 0);
  if ($inner)
  {
    last if (/^Werbung\:$/);
    printf("%s\n", $_);
  }
  $inner = 1 if (/Nachrichten/i && /findet/i);
}
exit 0;

So, jetzt kann ich durch Aufruf von freace.sh die aktuellen Artikel von Freace in MP3 Files umwandeln lassen. Das Skript merkt sich, welche Artikel bereits umgewandelt wurden, so dass man das Skript problemlos per crontab einmal täglich aufrufen lassen kann.

Alle drei Freace Skripte stehen in einem Tar Archiv zum Download bereit.

Das Skript txt2mp3 ist zusammen mit der Mbrola Installation beschrieben.

Damit das alles funktioniert müssen noch folgende Programme installiert sein:

Morgentlicher Automatismus

Da ich ein fauler Mensch bin, habe ich auf meinem Server noch ein kleines Hotplug Skript im Verzeichnis /etc/hotplug/usb eingefügt. Es wird vom Hotplugsystem aufgerufen, falls man einen USB Memorystick oder einen MP3 Player anschließt. Dieses Skript prüft, ob das Verzeichnis podder auf dem USB Stick vorhanden ist und kopiert dann alle MP3 Dateien auf den Stick.

usb-storage

#!/bin/sh
if [ "${ACTION}" = "add" ] && [ -f "${DEVICE}" ]; then
  /bin/mkdir -p /mnt/usb
  /bin/mount -t vfat /dev/sda1 /mnt/usb
  if [ -d /mnt/usb/podder ]; then
    /bin/mkdir -p /mnt/usb/podder-last
    /bin/rm -f /mnt/usb/podder-last/*.mp3
    /bin/mv /mnt/usb/podder/*.mp3 /mnt/usb/podder-last/
    /bin/mv /path/to/mp3newsdir/*.mp3 /mnt/usb/podder/
  fi
  /bin/umount /mnt/usb
fi

So, und jetzt genügt es, wenn ich jeden Morgen einfach meinen MP3 Player am Server mal kurz zum Datenaustausch in den USB Port stecke.