- Mitglied seit
- 10 Jul 2008
- Beiträge
- 187
- Punkte für Reaktionen
- 0
- Punkte
- 16
Ich bin seit längerem als Leser und Frager hier in diesem Forum unterwegs. Es hat mir manchmal geholfen, manchmal auch nicht. Ich freue mich über die User hier, die bereitwillig ihr Wissen der Allgemeinheit zur Verfügung stellen und damit Anderen uneigennützig helfen.
Da ein Forum nicht nur von den Fragern leben kann, möchte ich heute auch mal meine "Erkenntnisse" der Allgemeinheit zur Verfügung stellen.
Also: Ich habe mich mit der DTMF-Box des hier im Forum verschollenen Entwicklers bodega beschäftigt. Ein schönes Programmpaket, welches die Möglichkeiten einer "Freetz"-Box sinnvoll erweitert. Leider wurden die Scripte dieses Programms nicht weiter gepflegt, was sich beispielsweise im nicht mehr funktionierenden Wetter-Podcast wiederspiegelt.
Ein weiteres, bisher ungelöstes Poblem ist das Suchen von mp3-Links in RSS-Feeds. Es war in einem früheren Release der dtmf-Box schon mal angedacht war, wurde aber nicht weiter verfolgt.
Ich habe mich mal bissel in die Scriptprogrammierung von Linux eingearbeitet und folgende Scripte modifiziert:
1) misc_weather.sh
Hier wird der (nicht mit dargestellte) rss-Feed von "DONNERWETTER.DE" gelesen und der jeweils aktuelle Wetterbericht ausgegeben. Ausgehend von der Radio-Stream-Shell habe ich hier noch eine Suchroutine reingebastelt, die den rss-Feed sucht und ausgibt.
Leider habe ich keine weiteren Wetterrpodcasts im Netz gefunden, die tagesaktuell Wetterberichte einstellen. Vielleicht kennt Jemand noch welche...
2) misc_nachrichten.sh
Ist praktisch eine Erweiterung von misc_weather.sh. Geändert auf NEWSSTREAM-Einträge und erweitert mit einem weiteren Übergabeparameter, der eine Auswahl des Links innerhalb des rss-Feeds ermöglicht. Also etwa mittels eines Menüscriptes
wobei der Übergabeparameter "%$2%" den X-ten Link auf der Seite auswählt.
3) misc_checkmaild.sh
Hab ich auch bearbeitet. Zum Einen werden jetzt alte und neue Nachrichten getrennt angesagt, zum Anderen war (zumindest für web.de) die Ausgabe der Gesamtnachrichten fehlerhaft.
Die Scripte könnt Ihr gern diskutieren, nutzen und verändern. Ich würde mich freuen, wenn vielleicht auch andere DTMF-Box-Nutzer mal ihre Scripte zur Verfügung stellen könnten, die vielleicht noch viel ausgereifter sind, als mir das mit meinen ersten Linux-Schritten gelingen konnte.
Da ein Forum nicht nur von den Fragern leben kann, möchte ich heute auch mal meine "Erkenntnisse" der Allgemeinheit zur Verfügung stellen.
Also: Ich habe mich mit der DTMF-Box des hier im Forum verschollenen Entwicklers bodega beschäftigt. Ein schönes Programmpaket, welches die Möglichkeiten einer "Freetz"-Box sinnvoll erweitert. Leider wurden die Scripte dieses Programms nicht weiter gepflegt, was sich beispielsweise im nicht mehr funktionierenden Wetter-Podcast wiederspiegelt.
Ein weiteres, bisher ungelöstes Poblem ist das Suchen von mp3-Links in RSS-Feeds. Es war in einem früheren Release der dtmf-Box schon mal angedacht war, wurde aber nicht weiter verfolgt.
Ich habe mich mal bissel in die Scriptprogrammierung von Linux eingearbeitet und folgende Scripte modifiziert:
1) misc_weather.sh
Hier wird der (nicht mit dargestellte) rss-Feed von "DONNERWETTER.DE" gelesen und der jeweils aktuelle Wetterbericht ausgegeben. Ausgehend von der Radio-Stream-Shell habe ich hier noch eine Suchroutine reingebastelt, die den rss-Feed sucht und ausgibt.
Leider habe ich keine weiteren Wetterrpodcasts im Netz gefunden, die tagesaktuell Wetterberichte einstellen. Vielleicht kennt Jemand noch welche...
Code:
#!/var/tmp/sh
. /var/dtmfbox/script.cfg
. /var/dtmfbox/script/funcs.sh
MODE="$1"
SRC_ID="$2"
eval STREAM_ID="\$WETTER_STREAM${MODE}"
MADPLAY="$MADPLAY_PATH/madplay"
# madplay vorhanden?
if [ ! -f "$MADPLAY" ]; then
$DTMFBOX $SRC_ID -speak "Maed plaei nicht hinterlegt!"
exit 1;
fi
RADIO_STREAM_URL=`wget "$STREAM_ID" -O - | grep "<enclosure url=.*" | sed -e 's/.*<enclosure url=\"//1' -e 's/\".*//g' | head -n 1`
get_locktempdir
RADIO_STREAM_FIFO="$LOCKTEMPDIR/$SRC_ID-radio_stream-$MODE"
# stream hinterlegt?
if [ "$RADIO_STREAM_URL" = "" ];
then
$DTMFBOX $SRC_ID -speak "Njus sztriem $MODE nicht hinterlegt!"
exit 1;
fi
# stop all!
$DTMFBOX $SRC_ID -stop play all
sleep 1
# play!
(echo -n "")&
RADIO_STREAM_FIFO="$RADIO_STREAM_FIFO.$!"
$MKFIFO "$RADIO_STREAM_FIFO"
if [ -p "$RADIO_STREAM_FIFO" ];
then
wget "$RADIO_STREAM_URL" -O - | $MADPLAY -R 22050 -m -o wave:$RADIO_STREAM_FIFO - &
$DTMFBOX $SRC_ID -playstream "$RADIO_STREAM_FIFO" hz=22050 wait_start=100 wait_end=100
rm "$RADIO_STREAM_FIFO"
fi
2) misc_nachrichten.sh
Ist praktisch eine Erweiterung von misc_weather.sh. Geändert auf NEWSSTREAM-Einträge und erweitert mit einem weiteren Übergabeparameter, der eine Auswahl des Links innerhalb des rss-Feeds ermöglicht. Also etwa mittels eines Menüscriptes
Code:
/var/dtmfbox/script/misc_nachrichten.sh(/var/dtmfbox/script/misc_nachrichten.sh, "%$1%", "%src_id%", "%$2%")
wobei der Übergabeparameter "%$2%" den X-ten Link auf der Seite auswählt.
Code:
#!/var/tmp/sh
. /var/dtmfbox/script.cfg
. /var/dtmfbox/script/funcs.sh
MODE="$1"
SRC_ID="$2"
N="$3"
eval STREAM_ID="\$NEWS_STREAM${MODE}"
MADPLAY="$MADPLAY_PATH/madplay"
# madplay vorhanden?
if [ ! -f "$MADPLAY" ]; then
$DTMFBOX $SRC_ID -speak "Maed plaei nicht hinterlegt!"
exit 1;
fi
RADIO_STREAM_URL=`wget "$STREAM_ID" -O - | grep "<enclosure url=.*" | sed -e 's/.*<enclosure url=\"//1' -e 's/\".*//g' | head -n "$N" | tail -n 1`
get_locktempdir
RADIO_STREAM_FIFO="$LOCKTEMPDIR/$SRC_ID-radio_stream-$MODE"
# stream hinterlegt?
if [ "$RADIO_STREAM_URL" = "" ];
then
$DTMFBOX $SRC_ID -speak "Njus sztriem $MODE nicht hinterlegt!"
exit 1;
fi
# stop all!
$DTMFBOX $SRC_ID -stop play all
sleep 1
# play!
(echo -n "")&
RADIO_STREAM_FIFO="$RADIO_STREAM_FIFO.$!"
$MKFIFO "$RADIO_STREAM_FIFO"
if [ -p "$RADIO_STREAM_FIFO" ];
then
wget "$RADIO_STREAM_URL" -O - | $MADPLAY -R 22050 -m -o wave:$RADIO_STREAM_FIFO - &
$DTMFBOX $SRC_ID -playstream "$RADIO_STREAM_FIFO" hz=22050 wait_start=100 wait_end=100
rm "$RADIO_STREAM_FIFO"
fi
3) misc_checkmaild.sh
Hab ich auch bearbeitet. Zum Einen werden jetzt alte und neue Nachrichten getrennt angesagt, zum Anderen war (zumindest für web.de) die Ausgabe der Gesamtnachrichten fehlerhaft.
Code:
#!/var/tmp/sh
. /var/dtmfbox/script.cfg
MODE="$1"
SRC_ID="$2"
parse_main_info() {
MAIN_STATUS="$6"
}
MAIL_FILE="$CHECKMAILD_PATH/checkmaild.$MODE"
if [ ! -f "$MAIL_FILE" ];
then
$DTMFBOX $SRC_ID -speak "Scheck maeil Datendatei nicht gefunden."
return 1
fi
# read first line and output status
MAIN_INFO=`cat "$MAIL_FILE" | $HEAD -n 1`
parse_main_info $MAIN_INFO
let NEW_MAIL=`echo "$MAIN_STATUS" | sed -e 's/\(.*\)\/.*/\1/g' -e 's/00\(.\)/\1/g' -e 's/0\(..\)/\1/g'`
let OLD_MAIL=`echo "$MAIN_STATUS" | sed -e 's/.*\/\(.*\)/\1/g' -e 's/00\(.\)/\1/g' -e 's/0\(..\)/\1/g'`
let OLD_MAIL=$OLD_MAIL-$NEW_MAIL
SAY=""
if [ "$NEW_MAIL" = "0" ]; then SAY="Sie haben keine neuen I Maeils"; fi
if [ "$NEW_MAIL" = "1" ]; then SAY="Sie haben eine neue I Maeil"; fi
if [ "$SAY" = "" ]; then SAY="Sie haben $NEW_MAIL neue I Maeils"; fi
$DTMFBOX $SRC_ID -speak "$SAY"
sleep 4
SAY=""
if [ "$OLD_MAIL" = "0" ]; then SAY="Sie haben keine alten I Maeils"; fi
if [ "$OLD_MAIL" = "1" ]; then SAY="Sie haben eine alte I Maeil"; fi
if [ "$SAY" = "" ]; then SAY="Sie haben $OLD_MAIL alte I Maeils"; fi
$DTMFBOX $SRC_ID -speak "$SAY"
Zuletzt bearbeitet: