hakeの日記

Windows環境でプログラミングの勉強をしています。

SHOUTcastを聞く

7日4日の日記にコメントいただいたshachicocoさんのブログ「龍の日記」の7月26日のエントリーを拝見してSHOUTcastというサイトを知りました。見てみると、こりゃスゴイ!配信数がハンパじゃありません、BGMとして選び放題です。というわけで、以前作ったネットラジオのランチャープログラムを、SHOUTcastのplsファイルをURLリストに追加できるように修正。ただしビットレートが高めなのでPHSだと辛いかも。。。(追記:低ビットレートの配信のみ表示させることもできました)
このサイト素のPCでは再生できなくて、どうやらWinampというプレーヤーソフトが必要らしい、mplayerってそんな形式にも対応してるんですね。


SHOUTcasthttp://www.shoutcast.com/


ついでにダウンロードした情報?ファイルもリストから選択できるようにも修正。わけのわからんURLよりも意味のある名前に変更したファイルの方が便利ですよね。ファイルの置き場所は/home/zaurus/Documennts/netradio/フォルダです。mplyerの-playlistオプションで再生可能なファイル(asx、pls等)を置きます。ただし日本語ファイル名は文字化けするのでNGです。


以下がスクリプト、/home/QtPalmtop/bin/netradioとしてeucJPで保存、chmod +x、適当にアイコン登録です。

追記)インストールパッケージをこちらに置きました。

#!/bin/sh

export QSHDLG_APP=netradio

INPUT=/var/spool/qshdlg/input_$QSHDLG_APP
OUTPUT=/var/spool/qshdlg/output_$QSHDLG_APP
CONTROL=/var/spool/qshdlg/control_$QSHDLG_APP

LIST=/home/zaurus/Documents/netradio.lst
FILEDIR=/home/zaurus/Documents/netradio/
MPLAYER="/home/QtPalmtop/bin/mplayer -quiet"
TMPFILE=/home/zaurus/Documents/netradio_$$

qshdlg custom -C message -A -f lcfont -t "netradio" -c eucJP -M &
while [ ! -p $CONTROL ]
do
done

echo "リスト表示" > $OUTPUT
echo 'item(QString,QString)' '"停止"' '"stop"' > $CONTROL
echo 'item(QString,QString)' '"ネット接続"' '"connect"' > $CONTROL
echo 'item(QString,QString)' '"ネット切断"' '"disconnect"' > $CONTROL

### File List
if [ -d $FILEDIR ]; then
  echo 'label(QString)' '"--- File List ---"' > $CONTROL
  for FILE in `ls -1 $FILEDIR`
  do
    echo 'item(QString)' "File=$FILE" > $CONTROL
  done
fi
### URL List
if [ -f $LIST ]; then
  echo 'label(QString)' '"--- URL List ---"' > $CONTROL
  while read URL
  do
    echo 'item(QString)' "$URL" > $CONTROL
  done < $LIST
fi
echo 'showSelect()' > $CONTROL

while read RET < $INPUT
do
   case $RET in
   stop)
        echo "停止します" > $OUTPUT
        killall mplayer
        if [ -f $TMPFILE ]; then
            rm $TMPFILE
        fi
        ;;
   connect)
        echo "ネットに接続します" > $OUTPUT
        qcop QPE/Network 'connectRequest()'
        ;;
   disconnect)
        echo "ネットを切断します" > $OUTPUT
        qcop QPE/Network 'stop()'
        ;;
   File=*)
#        echo "ret=$RET" > $OUTPUT
        TMPFILE=`echo $RET | sed -e 's/^File=\(..*\)$/\1/'`
#        echo "tmpfile=$TMPFILE" > $OUTPUT
        echo "$RET を再生します" > $OUTPUT
        $MPLAYER -playlist ${FILEDIR}${TMPFILE} &
        rm $TMPFILE
        ;;
   *)
#        echo "ret=$RET" > $OUTPUT
        EXT=`echo $RET | sed -e 's/^..*\.\(..*\)$/\1/'`
#        echo "ext=$EXT" > $OUTPUT
        case "$EXT" in
            "pls" | "asx" )
                 echo "情報ファイルを取得してます" > $OUTPUT
                 wget -O $TMPFILE $RET
                 echo "$RET を再生します" > $OUTPUT
                 $MPLAYER -playlist $TMPFILE &
                 rm $TMPFILE
                 ;;
             *)
                 echo "$RET を再生します" > $OUTPUT
                 $MPLAYER $RET &
                 ;;
        esac
        ;;
   esac
done