把radioget的直播列表转换为smplayer直播列表的脚本

发布: 2011-11-18 15:52

radioget是一个linux 下收听广播的小软件,可以媲美龙卷风很方便。
使用Qt4开发,移植性很好。
看了一下代码,发现广播列表在一个标准XML文件中,非常清晰。
本人经常用的是smplayer,所以写了一个脚本,把这个广播列表转换为smplayer的广播列表。
但smplayer不支持列表分类,最后的结果就是smplayer的广播列表非常长,但用起来还是相当方便的。

使用方法,下载并执行这个脚本,启动smplayer,在播放菜单中找广播列表。
执行的时候,如果smplayer正在运行,最好先退出。
随机测试了一下,大部分地址都还有效。

最近更新了一个html版,放在页面上,用起来也很方便,
http://nullget.sourceforge.net/html/radioget.html

radioget_xml_to_smplayer_radio_list.sh:

[code type="bash"]
#!/bin/sh

# format
# #EXTM3U
# #EXTINF:0,vvv,
# mms://fff
# #EXTINF:0,fff,
# mms://ttt

# http://radioget.googlecode.com/svn/trunk/radiolist.xml
radio_get_xml=$HOME/.config/smplayer/radiolist.xml
smplayer_audio_file=$HOME/.config/smplayer/radio.m3u8
temp_audio_file=/tmp/radio.m3u8

if [ -f $radio_get_xml ] ; then
mv -v $radio_get_xml ${radio_get_xml}.bak
fi

wget -O $radio_get_xml http://radioget.googlecode.com/svn/trunk/radiolist.xml

echo "#EXTM3U" > $temp_audio_file

radio_caty=
while read radio
do
# echo $radio
xml_ver_line=`echo $radio|grep "xml version"`
xml_root_line=`echo $radio|grep "RadioGet"`
radio_cat_line=`echo $radio|grep "radiotag"`
radio_addr_line=`echo $radio|grep "url"`

if [ x"$xml_ver_line" = x"" ] ; then
true;
else
continue;
fi

if [ x"$xml_root_line" = x"" ] ; then
true;
else
continue;
fi

if [ x"$radio_cat_line" = x"" ] ; then
true;
else
radio_caty=`echo $radio|awk -F\" '{print $2}'`

if [ x"$radio_caty" = x"" ] ; then
# echo $radio_caty
true;
fi
continue;
fi

if [ x"$radio_addr_line" = x"" ] ; then
true;
else
radio_addr=`echo $radio|awk -F\" '{print $4}'`
radio_name=`echo $radio|awk -F\" '{print $2}'`

echo $radio_caty "->" $radio_name "->" $radio_addr
echo "#EXTINF:0,${radio_caty}->${radio_name}," >> $temp_audio_file
echo "$radio_addr" >> $temp_audio_file
fi

done < $radio_get_xml

mv -v $smplayer_audio_file ${smplayer_audio_file}.bak
cp -v $temp_audio_file ${smplayer_audio_file}

[/code]


原文: http://qtchina.tk/?q=node/446

Powered by zexport