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:
- curl
- lynx
- perl
- mbrola (inkl. pipefilt, preproc, txt2pho)
- lame
- sox
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.