#!/bin/sh
## Name: hiChannel 命令列點播器
## Copyright (R) 2007 Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
## License: GPLv3
## Version: 1.0.0

set +o xtrace

category=-1
channel=-1
live=-1

function read_category ()
{
	cat <<-ENDLINE
hiChannel 命令列點播器
1. 音樂
2. 生活資訊
3. 新聞
4. 綜合
5. 外語
6. 多元文化
7. 交通
8. 免費影視
ENDLINE
	echo -n "請選擇："
	read category
}

function read_music_site ()
{
	cat <<-ENDLINE
hiChannel 命令列點播器 >> 1. 音樂
 0. 回到上一層
 1. ASIAFM 衛星音樂台
 2. Apple line 蘋果線上
 3. BestRadio 台中好事903
 4. BestRadio 台北好事989
 5. BestRadio 花蓮好事935
 6. BestRadio 高雄港都983
 7. HitFm 聯播網 台中91.5
 8. HitFm 聯播網 高雄90.1
 9. HitFm 聯播網 台北91.7
10. KISS RADIO 南投廣播
11. KISS RADIO 台南知音廣播
12. KISS RADIO 大苗栗廣播
13. KISS RADIO 大眾廣播電台
14. KISS RADIO 網路音樂台
15. 中廣古典網
16. 中廣流行網
17. 中廣音樂網 i radio
18. 台北之音經典音樂台
19. 台北愛樂
20. 台灣之音-音樂
21. 太陽電台
22. 奇美古典音樂網
ENDLINE
	echo -n "請選擇："
	read channel
}

function music_site_list ()
{
	until [ "$channel" -le 22 ] && [ "$channel" -ge 0 ]; do
		clear
		read_music_site
	done

	case "$channel" in
		1)
			channel=321
			;;
		2)
			channel=248
			;;
		3)
			channel=211
			;;
		4)
			channel=303
			;;
		5)
			channel=213
			;;
		6)
			channel=321
			;;
		7)
			channel=88
			;;
		8)
			channel=90
			;;
		9)
			channel=87
			;;
		10)
			channel=258
			;;
		11)
			channel=255
			;;
		12)
			channel=256
			;;
		13)
			channel=156
			;;
		14)
			channel=308
			;;
		15)
			channel=162
			;;
		16)
			channel=205
			;;
		17)
			channel=206
			;;
		18)
			channel=222
			;;
		19)
			channel=228
			;;
		20)
			channel=313
			;;
		21)
			channel=289
			;;
		22)
			channel=294
			;;
		*)
			channel=-1
			;;
	esac
}

function read_life_site ()
{
	cat <<-ENDLINE
hiChannel 命令列點播器 >> 2. 生活資訊
 0. 回到上一層
 1. ASIA FM92.3亞太電台
 2. ASIA FM92.7亞州電台
 3. GOLD FM-台中城市廣播
 4. GOLD FM-台北健康電台
 5. IC之音
 6. 佳音廣播電台
 7. 佳音電台2台
 8. 全國廣播
 9. 台中廣播
10. 台北廣播電台- 都會資訊頻道
11. 台北廣播電台喔海洋頻道
12. 台視數位廣播
13. 大千電台
14. 大愛網路電台
15. 宜蘭中山電台
16. 環宇廣播
17. 警廣長青網
18. 飛碟電台
ENDLINE
	echo -n "請選擇："
	read channel
}

function life_site_list ()
{
	until [ "$channel" -le 18 ] && [ "$channel" -ge 0 ]; do
		clear
		read_life_site
	done

	case "$channel" in
		1)
			channel=295
			;;
		2)
			channel=210
			;;
		3)
			channel=226
			;;
		4)
			channel=229
			;;
		5)
			channel=148
			;;
		6)
			channel=201
			;;
		7)
			channel=250
			;;
		8)
			channel=202
			;;
		9)
			channel=230
			;;
		10)
			channel=208
			;;
		11)
			channel=238
			;;
		12)
			channel=319
			;;
		13)
			channel=109
			;;
		14)
			channel=325
			;;
		15)
			channel=301
			;;
		16)
			channel=282
			;;
		17)
			channel=271
			;;
		18)
			channel=232
			;;
		*)
			channel=-1
			;;
	esac
}

function read_news_site ()
{
	cat <<-ENDLINE
hiChannel 命令列點播器 >> 3. 新聞
0. 回到上一層
1. NEWS98新聞網
2. 中廣新聞網
3. 綠色和平台灣文化廣播電台
ENDLINE
	echo -n "請選擇："
	read channel
}

function news_site_list ()
{
	until [ "$channel" -le 3 ] && [ "$channel" -ge 0 ]; do
		clear
		read_news_site
	done

	case "$channel" in
		1)
			channel=187
			;;
		2)
			channel=207
			;;
		3)
			channel=327
			;;
		*)
			channel=-1
			;;
	esac
}

function read_others_site ()
{
	cat <<-ENDLINE
hiChannel 命令列點播器 >> 4. 綜合
 0. 回到上一層
 1. 台灣之音-華語
 2. 復興廣播電台 短波網
 3. 復興廣播電台 第一網
 4. 復興廣播電台 第二網
 5. 正聲台北調幅台
 6. 正聲台北調頻台
 7. 漢聲光華網-中波
 8. 漢聲光華網-短波
 9. 漢聲廣播電台
10. 漢聲廣播電台全國調頻網
ENDLINE
	echo -n "請選擇："
	read channel
}

function others_site_list ()
{
	until [ "$channel" -le 10 ] && [ "$channel" -ge 0 ]; do
		clear
		read_others_site
	done

	case "$channel" in
		1)
			channel=315
			;;
		2)
			channel=288
			;;
		3)
			channel=286
			;;
		4)
			channel=287
			;;
		5)
			channel=317
			;;
		6)
			channel=198
			;;
		7)
			channel=281
			;;
		8)
			channel=309
			;;
		9)
			channel=215
			;;
		10)
			channel=216
			;;
		*)
			channel=-1
			;;
	esac
}

function read_foreign_site ()
{
	cat <<-ENDLINE
hiChannel 命令列點播器 >> 5. 外語
0. 回到上一層
1. ICRT
2. 台灣之音-FM
3. 台灣之音-亞洲
4. 台灣之音-歐美及方言
ENDLINE
	echo -n "請選擇："
	read channel
}

function foreign_site_list ()
{
	until [ "$channel" -le 4 ] && [ "$channel" -ge 0 ]; do
		clear
		read_foreign_site
	done

	case "$channel" in
		1)
			channel=177
			;;
		2)
			channel=312
			;;
		3)
			channel=311
			;;
		4)
			channel=314
			;;
		*)
			channel=-1
			;;
	esac
}

function read_culture_site ()
{
	cat <<-ENDLINE
hiChannel 命令列點播器 >> 6. 多元文化
0. 回到上一層
1. 中廣客家頻道
2. 大漢之音
3. 寶島客家
4. 寶島新聲廣播電台
5. 新客家廣播電台
6. 高屏溪客家電台
ENDLINE
	echo -n "請選擇："
	read channel
}

function culture_site_list ()
{
	until [ "$channel" -le 6 ] && [ "$channel" -ge 0 ]; do
		clear
		read_culture_site
	done

	case "$channel" in
		1)
			channel=160
			;;
		2)
			channel=300
			;;
		3)
			channel=241
			;;
		4)
			channel=259
			;;
		5)
			channel=254
			;;
		6)
			channel=298
			;;
		*)
			channel=-1
			;;
	esac
}

function read_traffic_site ()
{
	cat <<-ENDLINE
hiChannel 命令列點播器 >> 7. 交通
0. 回到上一層
1. 警廣全國交通網
2. 警廣台中台
3. 警廣台北台
4. 警廣台南台
5. 警廣宜蘭台
6. 警廣新竹台
7. 警廣花蓮台
8. 警廣高雄台
ENDLINE
	echo -n "請選擇："
	read channel
}

function traffic_site_list ()
{
	until [ "$channel" -le 8 ] && [ "$channel" -ge 0 ]; do
		clear
		read_traffic_site
	done

	case "$channel" in
		1)
			channel=269
			;;
		2)
			channel=260
			;;
		3)
			channel=261
			;;
		4)
			channel=263
			;;
		5)
			channel=265
			;;
		6)
			channel=268
			;;
		7)
			channel=266
			;;
		8)
			channel=267
			;;
		*)
			channel=-1
			;;
	esac
}

function read_live_site ()
{
	cat <<-ENDLINE
hiChannel 命令列點播器 >> 8. 免費影視
 0. 回到上一層
 1. 流行追蹤
 2. 中天新聞台
 3. 大愛電視台
 4. 華視影音頻道
 5. 生命電視台
 6. 大愛電視二台
 7. 世棒2台
 8. 世棒1台
 9. KuLife
10. KuMovie
11. KuDrama
ENDLINE
	echo -n "請選擇："
	read channel
}

function live_site_list ()
{
	until [ "$channel" -le 11 ] && [ "$channel" -ge 0 ]; do
		clear
		read_live_site
		live=1
	done

	case "$channel" in
		1)
			channel=21
			;;
		2)
			channel=37
			;;
		3)
			channel=38
			;;
		4)
			channel=50
			;;
		5)
			channel=54
			;;
		6)
			channel=57
			;;
		7)
			channel=603
			;;
		8)
			channel=996
			;;
		9)
			channel=997
			;;
		10)
			channel=998
			;;
		11)
			channel=999
			;;
		*)
			channel=-1
			live=-1
			;;
	esac
}

function wmp_get ()
{
	wget -q --user-agent 'Windows Media Player' --referer=http://hichannel.hinet.net -O - "$*"
}

function hinet_radio_url ()
{
	wmp_get $(wmp_get "http://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://hichannel.hinet.net/api/streamFreeLive.jsp?id=$*&quality=high" | grep mms | cut -d '"' -f 2) | grep 203 | cut -d '"' -f 2
}

function main_func ()
{
	until [ "$category" -le 8 ] && [ "$category" -ge 1 ]; do
		clear
		read_category
		case "$category" in
			1) # 音樂
				music_site_list
				if [ "$channel" = -1 ]; then
					category=-1
				fi
				;;
			2) # 生活資訊
				life_site_list
				if [ "$channel" = -1 ]; then
					category=-1
				fi
				;;
			3) # 新聞
				news_site_list
				if [ "$channel" = -1 ]; then
					category=-1
				fi
				;;
			4) # 綜合
				others_site_list
				if [ "$channel" = -1 ]; then
					category=-1
				fi
				;;
			5) # 外語
				foreign_site_list
				if [ "$channel" = -1 ]; then
					category=-1
				fi
				;;
			6) # 多元文化
				culture_site_list
				if [ "$channel" = -1 ]; then
					category=-1
				fi
				;;
			7) # 交通
				traffic_site_list
				if [ "$channel" = -1 ]; then
					category=-1
				fi
				;;
			8) # 免費影視
				live_site_list
				if [ "$channel" = -1 ]; then
					category=-1
				fi
				;;
		esac
	done

	if [ x"$live" = x1 ]; then
		echo "$0 $channel $live" 
		#gst-launch playbin uri=$(hinet_video_url $channel)
		echo -e "\033[1;33m$(hinet_video_url $channel)\033[m"
		mplayer $(hinet_video_url $channel) -zoom -vo x11
	else
		echo "$0 $channel"
		#gst-launch playbin uri=$(hinet_radio_url $channel)
		echo -e "\033[1;33m$(hinet_radio_url $channel)\033[m"
		mplayer $(hinet_radio_url $channel)
	fi
}

if [ x"$2" != x ]; then
	gst-launch playbin uri=$(hinet_video_url $1)
elif [ x"$1" != x ]; then
	gst-launch playbin uri=$(hinet_radio_url $1)
else
	main_func $*
fi

