电台脚本ghiChannel.sh (有zenity做的gui界面)
- xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
- 联系:
电台脚本ghiChannel.sh (有zenity做的gui界面)
^^ RT
昨天某人提到了一个叫hiChannel.sh (http://fourdollars.blogspot.com/search/ ... Channel.sh)的电台脚本,很不错,我给加了一个简单的gui,去除了其中定时提醒的功能,还马马虎虎啦,欢迎使用。
昨天某人提到了一个叫hiChannel.sh (http://fourdollars.blogspot.com/search/ ... Channel.sh)的电台脚本,很不错,我给加了一个简单的gui,去除了其中定时提醒的功能,还马马虎虎啦,欢迎使用。
- 附件
-
- ghiChannel.sh.tar.bz2
- (3.38 KiB) 已下载 399 次
-
- Screenshot-ghiChannel 播放器 V-08.10.19.png (19.63 KiB) 查看 5684 次
-
- Screenshot-ghiChannel 播放器 V-08.10.19-1.png (21.12 KiB) 查看 5684 次
-
- Screenshot-ghiChannel 播放器 V-08.10.19-2.png (13.42 KiB) 查看 5679 次
- xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
- 联系:
Re: 电台脚本ghiChannel.sh (有zenity做的gui界面)
代码在此:
代码: 全选
#!/usr/bin/env bash
#This is a tuner using zenity based on FourDollars' hichannel.sh (http://fourdollars.blogspot.com/search/label/hiChannel.sh)
name="Name: ghiChannel zenity tuner"
copyright="Copyright (R): 2008-2009 xiooli (xioooli@yahoo.com.cn)"
license="License: GPLv3"
version="Version: 08.10.19"
declare -i option_verbose=0
declare -i option_live_tv=0
function player ()
{
case $(uname) in
Darwin)
open -a "QuickTime Player" $1 && osascript -e "tell application \"QuickTime Player\"" -e "tell document 1" -e "play" -e "end tell" -e "end tell"
;;
*BSD)
mplayer $1 &
play_id="$!"
;;
Linux)
if [ ! -z "$(which mimms)" ] && [ ! -z "$(which ffplay)" ]; then
mimms $1 - | ffplay - &
play_id="$!"
elif [ ! -z "$(which gst-launch)" ]; then
gst-launch playbin uri=$1 &
play_id="$!"
elif [ ! -z "$(which mplayer)" ]; then
mplayer $1 &
play_id="$!"
elif [ ! -z "$(which xine)" ]; then
xine $1 &
play_id="$!"
elif [ ! -z "$(which totem)" ]; then
totem $1 &
play_id="$!"
fi
;;
esac
}
program_name="ghiChannel 播放器 ${version/ersion: /-}"
prompt_message='請選擇:'
category_list=(music life news others foreign culture traffic live)
category_name=(音樂 生活資訊 新聞 綜合 外語 多元文化 交通 免費影視)
music_site_list=(
'ASIAFM 衛星音樂台' '321'
'Apple line 蘋果線上' '248'
'BestRadio 台中好事903' '211'
'BestRadio 台北好事989' '212'
'BestRadio 花蓮好事935' '303'
'BestRadio 高雄港都983' '213'
'Flyradio 飛揚調頻895' '357'
'HitFm 聯播網 台中91.5' '88'
'HitFm 聯播網 高雄90.1' '90'
'HitFm 聯播網 台北91.7' '87'
'KISS RADIO 南投廣播' '258'
'KISS RADIO 台南知音廣播' '255'
'KISS RADIO 大苗栗廣播' '256'
'KISS RADIO 大眾廣播電台' '156'
'KISS RADIO 網路音樂台' '308'
'中廣古典網' '162'
'中廣流行網' '205'
'中廣音樂網 i radio' '206'
'佳音CCM' '304'
'全國廣播音樂網' '338'
'台北之音經典音樂台' '222'
'台北愛樂' '228'
'台灣之音-音樂' '313'
'太陽電台' '289'
'奇美古典音樂網' '294'
'寶島新聲廣播電台' '259'
)
life_site_list=(
'ASIA FM92.3 亞太電台' '295'
'ASIA FM92.7 亞州電台' '210'
'GOLD FM-台中城市廣播' '226'
'GOLD FM-台北健康電台' '229'
'IC之音' '148'
'佳音廣播電台' '201'
'佳音電台2台' '250'
'全國廣播' '202'
'台中廣播' '230'
'台北廣播電台- 都會資訊頻道' '208'
'台北廣播電台喔海洋頻道' '238'
'台視數位廣播' '319'
'大千電台' '109'
'大愛網路電台' '325'
'宜蘭中山電台' '301'
'環宇廣播' '282'
'真心之音廣播電台' '217'
'蒲公英聖樂網' '337'
'警廣長青網' '271'
'青春線上' '356'
'飛碟電台' '232'
)
news_site_list=(
'NEWS98新聞網' '187'
'中廣新聞網' '207'
)
others_site_list=(
'台灣之音-華語' '315'
'復興廣播電台 短波網' '288'
'復興廣播電台 第一網' '286'
'復興廣播電台 第二網' '287'
'正聲台北調幅台' '317'
'正聲台北調頻台' '198'
'漢聲光華網-中波' '281'
'漢聲光華網-短波' '309'
'漢聲廣播電台' '215'
'漢聲廣播電台全國調頻網' '216'
'綠色和平台灣文化廣播電台' '327'
)
foreign_site_list=(
'ICRT' '177'
'台灣之音-FM' '312'
'台灣之音-亞洲' '311'
'台灣之音-歐美及方言' '314'
)
culture_site_list=(
'中廣客家頻道' '160'
'大漢之音' '300'
'寶島客家' '241'
'新客家廣播電台' '254'
'高屏溪客家電台' '298'
)
traffic_site_list=(
'警廣—交通網台東台' '358'
'警廣全國交通網' '269'
'警廣台中台' '260'
'警廣台北台' '261'
'警廣台南台' '263'
'警廣宜蘭台' '265'
'警廣新竹台' '268'
'警廣花蓮台' '266'
'警廣高雄台' '267'
)
live_site_list=(
'世棒2台' '603'
'世界盃棒球直播' '996'
'KuLife' '997'
'KuMovie' '998'
'KuDrama' '999'
'Bloomberg Television' '1001'
#'中視' '36'
'中天新聞台' '37'
'大愛電視台' '38'
'華視影音頻道' '50'
'生命電視台' '54'
'大愛電視二台' '57'
#'台灣樂起來(樂透開獎)' '58'
#'NOKIA音樂讓我說演唱會' '604'
'流行追蹤' '21'
)
function read_category ()
{
size=${#category_list[@]}
for ((i=0; i<size; i++)); do
echo " $((i+1)) ${category_name[$i]}"
done
}
function read_channel ()
{
echo -e " 0 回到上一層"
eval size=\${#${category_list[$((category-1))]}_site_list[@]}
for ((i=0; i<size/2; i++)); do
eval name=\${${category_list[$((category-1))]}_site_list[$((i*2))]}
echo "$((i+1))" "${name// /_}"
done
}
function wmp_get ()
{
if [ "$(uname)" != "Darwin" ]; then
if [ ! -z $(which wget) ]; then
wget -q --user-agent 'Windows Media Player' --referer 'http://www.hichannel.hinet.net' -O - "$*"
elif [ ! -z $(which curl) ]; then
curl -q --user-agent 'Windows Media Player' --referer 'http://www.hichannel.hinet.net' --location -o - "$*"
fi
else
curl -q --user-agent 'Windows Media Player' --referer 'http://www.hichannel.hinet.net' --location -o - "$*"
fi
}
function hinet_radio_url ()
{
wmp_get $(wmp_get "http://www.hichannel.hinet.net/api/streamFreeRadio.jsp?id=$*" | grep mms | cut -d '"' -f 2) | grep 203 | cut -d '"' -f 2
}
function hinet_video_url ()
{
wmp_get $(wmp_get "http://www.hichannel.hinet.net/api/streamFreeLive.jsp?id=$*&quality=high" | grep mms | cut -d '"' -f 2) | grep 203 | cut -d '"' -f 2
}
function media_player ()
{
if [ $option_live_tv = 1 ] ; then
player $(hinet_video_url $1)
else
player $(hinet_radio_url $1)
fi
}
function get_mode ()
{
if [ "$option_live_tv" = "1" ]; then
mode="live模式"
elif [ "$option_verbose" = "1" ];then
mode="version模式"
else
mode="其他模式"
fi
}
function main_func ()
{
while [ "${category:-nil}" = "nil" ]; do
get_mode
category=$(zenity --list --title="${program_name}" --text="($mode)选择类别:" --column="序号" --column="名称" "0" "程序设置" $(read_category))
[ "$?" -eq 1 ] && exit
[ "$category" = "0" ] && category="" && parse_parameter
while [ "${channel:-nil}" = "nil" -a "${category:-nil}" != "nil" ]; do
channel=$(zenity --list --title="${program_name}" --text="($mode)类别${category}(${category_name[$((category-1))]}),请选择频道:" --column="序号" --column="名称" $(read_channel))
if [ "$?" -eq 1 -o "$channel" = "0" ]; then
category=""
break
elif [ "${channel:-nil}" = "nil" ]; then
continue
fi
done
done
eval channelname=\${${category_list[$((category-1))]}_site_list[$((channel*2-2))]}
eval Channel=\${${category_list[$((category-1))]}_site_list[$((channel*2-1))]}
[ $category = 8 ] && option_live_tv=1
channel=""
category=""
media_player $Channel
terminat=$(zenity --list --title="${program_name}" --text="现在播放的是 [$channelname]" --column="ID" --column="是否终止播放?" "$play_id" "终止播放")
[ "$terminat" = "$play_id" ] && kill -9 $play_id
}
function show_about ()
{
zenity --info --width=300 --title="关于${program_name}" --text="${name}\n${copyright}\n${version}\n${license}"
}
function parse_parameter ()
{
param=$(zenity --list --title="系统设置" --text="选择条目:" --column="序号" --column="条目" "1" "关于" \
"2" "live模式" "3" "verbose模式" "4" "其他模式")
case $param in
1)
show_about
;;
2)
option_live_tv=1
option_verbose=0
;;
3)
option_verbose=1
option_live_tv=0
;;
4)
option_live_tv=0
option_verbose=0
esac
}
function system_check ()
{
if [ "$(uname)" != "Darwin" ]; then
if [ -z "$(which wget)" -a -z "$(which curl)" ]; then
zenity --warning --title="播放条件不满足" --text="$0 needs wget or curl, please install one of them."
exit
fi
fi
case $(uname) in
*BSD)
if [ -z "$(which mplayer)" ]; then
zenity --warning --title="播放条件不满足" --text="$0 needs mplayer, please install it."
exit
fi
;;
Linux)
if [ -z "$(which mimms)" -a -z "$(which ffplay)" -a -z "$(which gst-launch)" -a -z "$(which mplayer)" -a -z "$(which xine)" -a -z "$(which totem)" ]; then
zenity --warning --title="播放条件不满足" --text="$0 needs mplayer/xine/totem, please install one of them."
exit
fi
;;
esac
}
system_check
while :;do
main_func
done
- skyx
- 论坛版主
- 帖子: 9202
- 注册时间: 2006-12-23 13:46
- 来自: Azores Islands
- 联系:
Re: 电台脚本ghiChannel.sh (有zenity做的gui界面)
no security measure is worth anything if an attacker has physical access to the machine
- xinzhi
- 帖子: 238
- 注册时间: 2008-03-05 15:41
- 来自: 中国广西防城港
- 联系:
- xinzhi
- 帖子: 238
- 注册时间: 2008-03-05 15:41
- 来自: 中国广西防城港
- 联系:
Re: 电台脚本ghiChannel.sh (有zenity做的gui界面)
不错,使用正常~
最后在“终止播放”下面增加静音和最小化到托盘的功能就好了~
最后在“终止播放”下面增加静音和最小化到托盘的功能就好了~
- xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
- 联系:
Re: 电台脚本ghiChannel.sh (有zenity做的gui界面)
静音倒是可以,不过最小化到托盘就不知道怎么办了xinzhi 写了:不错,使用正常~
最后在“终止播放”下面增加静音和最小化到托盘的功能就好了~
- xinzhi
- 帖子: 238
- 注册时间: 2008-03-05 15:41
- 来自: 中国广西防城港
- 联系:
Re: 电台脚本ghiChannel.sh (有zenity做的gui界面)
恩,现在也不错了~
- xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
- 联系:
Re: 电台脚本ghiChannel.sh (有zenity做的gui界面)
刚刚改正了一个小问题,请重新下载xinzhi 写了:恩,现在也不错了~
- xinzhi
- 帖子: 238
- 注册时间: 2008-03-05 15:41
- 来自: 中国广西防城港
- 联系:
-
- 帖子: 24
- 注册时间: 2008-08-26 23:29
Re: 电台脚本ghiChannel.sh (有zenity做的gui界面)
搂主是用vim工具编程的吗
- HuntXu
- 帖子: 5776
- 注册时间: 2007-09-29 3:09
Re: 电台脚本ghiChannel.sh (有zenity做的gui界面)
脚本党好...
顺道来个建议是否能把电台列表和位置存成文件再用读取,这样修改,增加,删除等管理工作会好做很多,不用每次动脚本了...
我负责点子的~速闪~
顺道来个建议是否能把电台列表和位置存成文件再用读取,这样修改,增加,删除等管理工作会好做很多,不用每次动脚本了...
我负责点子的~速闪~
HUNT Unfortunately No Talent...
- xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
- 联系:
Re: 电台脚本ghiChannel.sh (有zenity做的gui界面)
是地,就写写简单的东东,没有那些高手那么专业wxj120bw 写了:搂主是用vim工具编程的吗
说实话,他那个取播放地址的那段我没有搞懂HuntXu 写了:脚本党好...
顺道来个建议是否能把电台列表和位置存成文件再用读取,这样修改,增加,删除等管理工作会好做很多,不用每次动脚本了...
我负责点子的~速闪~
- bones7456
- 帖子: 8495
- 注册时间: 2006-04-12 20:05
- 来自: 杭州
- 联系:
Re: 电台脚本ghiChannel.sh (有zenity做的gui界面)
关注我的blog: ε==3
- yjcong
- 帖子: 2470
- 注册时间: 2006-02-28 3:11
Re: 电台脚本ghiChannel.sh (有zenity做的gui界面)
看来以后是有可能脱离GTK和QT了(不对, 这个是不是用TK写的?)
LZ试试把mplayer和zenity结合到一起吧, 也许会比smplayer好
LZ试试把mplayer和zenity结合到一起吧, 也许会比smplayer好
一梦三年,
松风依旧,
萝月何曾老.
灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.
松风依旧,
萝月何曾老.
灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.
- xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
- 联系:
Re: 电台脚本ghiChannel.sh (有zenity做的gui界面)
zenity也是用gtk的吧。你认为点一下跳一个窗口的东东好玩么?yjcong 写了:看来以后是有可能脱离GTK和QT了(不对, 这个是不是用TK写的?)
LZ试试把mplayer和zenity结合到一起吧, 也许会比smplayer好