인터넷 방송 리모콘 *^^*

zedai1972의 이미지

집에서 인터넷방송을 자주봅니다. 그래서 url을 기억못하기때문에
case문을 남발한 셀프로그램으로 방송을 보곤했는데 tk를 사용해서
x에서 마우스만으로 조작하고 싶었슴다 .. 문득 -_-;

코드를 카피엔 패이스트 -_- 하면서 이게 아닌데 싶더군요...
좀더 다이너믹하면서.... 꿀꺽
코드는 아래처럼 좀 .. 무식함니다.
but !
하지만 돌아가죠 ^^;;

----------------------------------------------------
기본조건: 인터넷연결, mplayer, tk
실행조건: 위의 기본조건 충족 -> 아래 코드 를 복사해서 화일로 만듬
-> 화일에 실행권한을 줌 -> 실행
방송채널얻어온곳 : http://debianusers.org/DebianWiki/radio
소스코드 출처: Beginning Linux programming .. -_-

개선의 여지가 많은데 .. 가령 연결시 연결이 되는건지...
연결가능한 사이트만 활성화 한다든지...등등..
여러분들이 좀 수정좀 해줘서 알려주세요 ^^;
전 tk를 잘 몰라서여 ....
----------------------------------------------------


#!/usr/bin/wish -f
#!/usr/

set channel 0

set ra_state 0
set bt_state 0
set it_state 0
set ct_state 0

# 9,3,2,13
set r_ch_num 10
set bt_ch_num 4
set it_ch_num 3
set ct_ch_num 14

set running 0
set support_mul 0

# 
# col 0
checkbutton .r -text "라디오" -command {changeState} -relief flat \
                 -variable r_state -onvalue 1 -offvalue 0
# 
# col 1
checkbutton .bt -text "공중파 TV" -command {changeState} -relief flat \
                 -variable bt_state -onvalue 1 -offvalue 0
# 
# col 2 
checkbutton .it -text "위성 TV" -command {changeState} -relief flat \
                 -variable it_state -onvalue 1 -offvalue 0
# 
# col 3
checkbutton .ct -text "케이블  TV" -command {changeState} -relief flat \
                 -variable ct_state -onvalue 1 -offvalue 0


# radio
# col =0
radiobutton .r1 -text "FM_서울mbc" -variable channel \
				-value mms://liveradio.imbc.com/imbcmfm -justify left

radiobutton .r2 -text "AM_서울mbc" -variable channel \
				-value mms://liveradio.imbc.com/imbcsfm -justify left

radiobutton .r3 -text "FM_kbs1" -variable channel \
				-value mmst://live.kbs.co.kr/L_1FM -justify left

radiobutton .r4 -text "FM_kbs2" -variable channel \
				-value mmst://live.kbs.co.kr/L_2FM -justify left
			
radiobutton .r5 -text "AM_kbs_1radio" -variable channel \
				-value mms://liveradio.imbc.com/imbcsfm -justify left
 
radiobutton .r6 -text "AM_kbs_2radio" -variable channel \
				-value mms://liveradio.imbc.com/imbcsfm -justify left

radiobutton .r7 -text "AM_kbs_3radio" -variable channel \
				-value mms://liveradio.imbc.com/imbcsfm -justify left

radiobutton .r8 -text "사회교육방송" -variable channel \
				-value mms://live.kbs.co.kr/L_SCR -justify left

radiobutton .r9 -text "뮤직클럽 *^^*" -variable channel \
				-value http://cast1.mukulcast.com:11000 -justify left

# broad TV
# col =1
radiobutton .bt1 -text "mbc" -variable channel \
				-value mms://live.imbc.com/imbctv -justify left

radiobutton .bt2 -text "kbs1" -variable channel \
				-value mmst://211.106.66.140/H_1TV -justify left

radiobutton .bt3 -text "kbs2" -variable channel \
				-value mmst://211.233.25.52/H_2TV -justify left


# -_- TV
# col =2
radiobutton .it1 -text "위성kbs1" -variable channel \
				-value mmst://live.kbs.co.kr/S_2TV -justify left

radiobutton .it2 -text "BS-1" -variable channel \
				-value mms://165.229.11.114/satellite2 -justify left


# cable TV
# col=3
radiobutton .ct1 -text "YTN" -variable channel \
				-value mms://211.115.218.231/YTNLIVE -justify left

radiobutton .ct2 -text "동아" -variable channel \
				-value mms://vodcast5.korea.com/new_donga_live -justify left

radiobutton .ct3 -text "아리랑~" -variable channel \
				-value mms://210.124.186.162/arirangtv -justify left

radiobutton .ct4 -text "iTV" -variable channel \
				-value mms://iTV.dreamxlive.net/iTV -justify left

radiobutton .ct5 -text "MBN" -variable channel \
				-value mms://mbnlive.dreamxlive.net/mkimbn200 -justify left

radiobutton .ct6 -text "KTV" -variable channel \
				-value mms://211.216.53.154/KTV -justify left

radiobutton .ct7 -text "OBC" -variable channel \
				-value mms://211.47.66.174/obci -justify left

radiobutton .ct8 -text "SDN(ch35)" -variable channel \
				-value mmst://218.50.3.153/ch35  -justify left

radiobutton .ct9 -text "KMTV" -variable channel \
				-value mms://211.58.56.229/kmtv1818 -justify left

radiobutton .ct10 -text "M.Net" -variable channel \
				-value mms://vodmusic4.korea.com/mnet -justify left

radiobutton .ct11 -text "불교" -variable channel \
				-value mms://211.174.60.147/btnlive -justify left

radiobutton .ct12 -text "기독교" -variable channel \
				-value mms://211.233.71.230/tvlive -justify left

radiobutton .ct13 -text "일본m-tv" -variable channel \
				-value mms://211.234.191.84/movie-tv -justify left


checkbutton .support_m -text "다중채널지원 TV" -command {changeState} -relief flat \
                 -variable support_mul -onvalue 1 -offvalue 0
button .closeall -text "열린모든mplayer닫기" -command closeall -justify right
button .show -text "현재선택된사이트연결" -command showVars -justify right
button .exit -text "Exit" -command {fnexit} -justify right


# r_row=9
grid .r    -row 0 -column 0 -sticky "w"
grid .r1   -row 1 -column 0 -sticky "w"
grid .r2   -row 2 -column 0 -sticky "w"
grid .r3   -row 3 -column 0 -sticky "w"
grid .r4   -row 4 -column 0 -sticky "w"
grid .r5   -row 5 -column 0 -sticky "w"
grid .r6   -row 6 -column 0 -sticky "w"
grid .r7   -row 7 -column 0 -sticky "w"
grid .r8   -row 8 -column 0 -sticky "w"
grid .r9   -row 8 -column 0 -sticky "w"

# bt_row=3
grid .bt   -row 0 -column 1 -sticky "w"
grid .bt1   -row 1 -column 1 -sticky "w"
grid .bt2   -row 2 -column 1 -sticky "w"
grid .bt3   -row 3 -column 1 -sticky "w"

# it_row=2
grid .it   -row 0 -column 2 -sticky "w"
grid .it1   -row 1 -column 2 -sticky "w"
grid .it2   -row 2 -column 2 -sticky "w"

# ct_row=13
grid .ct   -row 0 -column 3 -sticky "w"
grid .ct1   -row 1 -column 3  -sticky "w"
grid .ct2   -row 2 -column 3 -sticky "w"
grid .ct3   -row 3 -column 3 -sticky "w"
grid .ct4   -row 4 -column 3 -sticky "w"
grid .ct5   -row 5 -column 3 -sticky "w"
grid .ct6   -row 6 -column 3 -sticky "w"
grid .ct7   -row 7 -column 3 -sticky "w"
grid .ct8   -row 8 -column 3 -sticky "w"
grid .ct9   -row 9 -column 3 -sticky "w"
grid .ct10   -row 10 -column 3 -sticky "w"
grid .ct11   -row 11 -column 3 -sticky "w"
grid .ct12   -row 12 -column 3 -sticky "w"
grid .ct13   -row 13 -column 3 -sticky "w"

# 실행, 종료

grid .support_m -row 14 -column 0 -sticky "w"
grid .closeall -row 14 -column 1 -sticky "w"
grid .show -row 14 -column 2 -sticky "w"
grid .exit -row 14 -column 3 -sticky "w"


proc fnexit args {
	global running
	if {$running == "1"} {	
		exec killall mplayer
		set running 0
	}
	exit
}
proc closeall args {
	global running
	if {$running == "1"} {	
		exec killall mplayer
		set running 0
	}
}
proc changeState args {
    global r_state
    global bt_state
    global it_state
    global ct_state
	global r_ch_num
	global bt_ch_num
	global it_ch_num
	global ct_ch_num
# 9,3,2,13 
	if {$r_state == "0"} {
        catch {
            .r1 config -state disabled
            .r2 config -state disabled
            .r3 config -state disabled
            .r4 config -state disabled
            .r5 config -state disabled
            .r6 config -state disabled
            .r7 config -state disabled
            .r8 config -state disabled
            .r9 config -state disabled
        }
    } else {
            .r1 config -state normal
            .r2 config -state normal
            .r3 config -state normal
            .r4 config -state normal
            .r5 config -state normal
            .r6 config -state normal
            .r7 config -state normal
            .r8 config -state normal
            .r9 config -state normal

    }

	if {$bt_state == "0"} {
        catch {
            .bt1 config -state disabled
            .bt2 config -state disabled
            .bt3 config -state disabled
        }
    } else {
            .bt1 config -state normal
            .bt2 config -state normal
            .bt3 config -state normal
    }

	if {$it_state == "0"} {
        catch {
            .it1 config -state disabled
            .it2 config -state disabled
        }
    } else {
            .it1 config -state normal
            .it2 config -state normal
    }

	if {$ct_state == "0"} {
        catch {
            .ct1 config -state disabled
            .ct2 config -state disabled
            .ct3 config -state disabled
            .ct4 config -state disabled
            .ct5 config -state disabled
            .ct6 config -state disabled
            .ct7 config -state disabled
            .ct8 config -state disabled
            .ct9 config -state disabled
            .ct10 config -state disabled
            .ct11 config -state disabled
            .ct12 config -state disabled
            .ct13 config -state disabled
        }
    } else {
            .ct1 config -state normal
            .ct2 config -state normal
            .ct3 config -state normal
            .ct4 config -state normal
            .ct5 config -state normal
            .ct6 config -state normal
            .ct7 config -state normal
            .ct8 config -state normal
            .ct9 config -state normal
            .ct10 config -state normal
            .ct11 config -state normal
            .ct12 config -state normal
            .ct13 config -state normal
    }
}


proc showVars args {
    global r_state bt_state it_state ct_state
	global channel running support_mul 
	

	if {$running == "1" & $support_mul =="0"} {	
		exec killall mplayer
		set running 0
	}
	exec mplayer $channel &
	set running 1

}


Forums: 
hey의 이미지

wish가 무슨 프로그램인가요?


----------------------------
May the F/OSS be with you..


zedai1972의 이미지

Quote:

tk프로그래밍을 시작하기 전에 시스템에서 tk윈도우형 셀인 wish가 path에서...

from "beginning linux programming 2rd p 769

음 셀코드에서 #!/bin/sh 처럼 기본 셀을 찾는게 아닌가 싶네요 ^^ ..

p.s : 위의 저의 코드를 카피해서 실행해 보니 tk의 기본 함수를 인식 못하는
에러가 뜨는 군요... 흠 짱나네 .. 영화 봐야하는디 >..<

\\(^^ )^^)// **

knight4u의 이미지

hey wrote:
wish가 무슨 프로그램인가요?

man wish 하면 자세하게 나오는데요

TCL/TK 를 이용한 Simple windowing shell 이랍니다.

당신을 위한 수호기사 Knight4u™

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.