research:rpi_radio
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판이전 판다음 판 | 이전 판 | ||
research:rpi_radio [2013/07/28 11:38] – [개선안] changwoo | research:rpi_radio [2014/10/09 21:24] (현재) – 바깥 편집 127.0.0.1 | ||
---|---|---|---|
줄 69: | 줄 69: | ||
===== 개선안 ===== | ===== 개선안 ===== | ||
- | 위 방법은 테스트이고, | + | 위 방법은 테스트이고, |
+ | |||
+ | 아래 스크립트에서 각 방송국(스테이션)은 하위 디렉토리 하나를 점유하고 있으며 각 하위 디렉토리에는 각 채널의 그림 파일과 pls 파일을 보유하고 있다. | ||
+ | |||
+ | <code php ipcheck.php> | ||
+ | <?php | ||
+ | function ipcheck() | ||
+ | { | ||
+ | $allow = array(" | ||
+ | |||
+ | foreach($allow as $ip) | ||
+ | if(eregi($ip, | ||
+ | return; | ||
+ | |||
+ | die(' | ||
+ | } | ||
+ | ?> | ||
+ | </ | ||
<code php index.php> | <code php index.php> | ||
+ | <?php | ||
+ | include(' | ||
+ | ipcheck(); | ||
+ | |||
+ | function get_channels($sitename) | ||
+ | { | ||
+ | $handle = opendir(" | ||
+ | $channels = array(); | ||
+ | while(false !== ($entry = readdir($handle))) | ||
+ | { | ||
+ | $path = pathinfo($entry); | ||
+ | $name = $path[' | ||
+ | $ext = $path[' | ||
+ | |||
+ | if($ext == ' | ||
+ | array_push($channels, | ||
+ | } | ||
+ | sort($channels); | ||
+ | return $channels; | ||
+ | } | ||
+ | |||
+ | function get_img($channel) | ||
+ | { | ||
+ | $exts = array(' | ||
+ | foreach($exts as $e) | ||
+ | { | ||
+ | $imgfile = $channel.$e; | ||
+ | if(file_exists($imgfile)) | ||
+ | return $imgfile; | ||
+ | } | ||
+ | |||
+ | return ""; | ||
+ | } | ||
+ | ?> | ||
+ | < | ||
< | < | ||
- | < | + | |
- | < | + | < |
- | </ | + | < |
- | < | + | <style type=" |
- | <h1>Digitally Imported | + | .station {margin-right: |
- | < | + | </ |
- | <ul> | + | |
+ | < | ||
+ | <h1>Radio at Raspberry Pi Server!</ | ||
+ | < | ||
+ | < | ||
+ | <div class=" | ||
+ | < | ||
+ | | ||
<?php | <?php | ||
// print all .pls file in the current directory | // print all .pls file in the current directory | ||
- | $handle | + | $difm = get_channels('di.fm'); |
- | $channels = array(); | + | foreach($difm as $ch) |
- | while(false !== ($entry = readdir($handle))) | + | |
{ | { | ||
- | $path = pathinfo($entry); | + | |
- | $name = $path[' | + | $img = get_img(" |
- | $ext | + | echo "< |
- | if($ext | + | |
- | array_push($channels, $name); | + | |
} | } | ||
- | + | ?> | |
- | sort($channels); | + | </ |
- | foreach($channels | + | </ |
+ | <div class=" | ||
+ | < | ||
+ | < | ||
+ | <?php | ||
+ | $skyfm = get_channels(' | ||
+ | foreach($skyfm as $ch) | ||
{ | { | ||
- | $url = urlencode($ch); | + | |
- | echo "< | + | $img = get_img(" |
+ | | ||
} | } | ||
?> | ?> | ||
- | < | + | |
- | </ul> | + | </div> |
- | </ | + | </ |
</ | </ | ||
</ | </ | ||
<code php control.php> | <code php control.php> | ||
+ | <?php | ||
+ | include(' | ||
+ | ipcheck(); | ||
+ | ?> | ||
< | < | ||
- | < | + | |
- | </ | + | </ |
< | < | ||
<?php | <?php | ||
function play($channel) | function play($channel) | ||
{ | { | ||
- | $filename = str_replace(' | + | |
- | $cmd = "sudo -u radio mplayer -playlist $filename.pls 1>/ | + | $cmd = "sudo -u radio mplayer -playlist $filename.pls 1>/ |
- | exec($cmd); | + | exec($cmd); |
- | echo "< | + | echo "< |
} | } | ||
function stop() | function stop() | ||
{ | { | ||
- | exec(' | + | |
- | echo "< | + | echo "< |
} | } | ||
if($_GET[" | if($_GET[" | ||
{ | { | ||
- | $channel = $_GET[' | + | |
- | if(file_exists($channel." | + | echo " |
- | { | + | |
- | stop(); | + | { |
- | play($channel); | + | stop(); |
- | } | + | play($channel); |
- | else | + | } |
- | { | + | else |
- | | + | { |
- | } | + | echo " |
+ | } | ||
} | } | ||
else if($_GET[" | else if($_GET[" | ||
{ | { | ||
- | stop(); | + | |
} | } | ||
else | else | ||
{ | { | ||
- | echo " | + | |
} | } | ||
줄 153: | 줄 222: | ||
</ | </ | ||
- | 이제는 디렉토리 내부에 pls 파일만 채워 주면 알아서 웹페이지가 갱신되는 편리함이 추가되었다. | + | 이제는 |
+ | |||
+ | {{ : | ||
===== 또다른 개선안 ===== | ===== 또다른 개선안 ===== | ||
- | * pls 파일과 같은 이름의 png 파일이 있으면 로딩할 수도 있을 것이다. | + | * <del>pls 파일과 같은 이름의 png 파일이 있으면 로딩할 수도 있을 것이다.</ |
- | * 사실 이 주소가 외부에서 노출되면 안된다. 외부 IP의 요청인 경우 작동하지 않도록 프로그램을 수정. | + | * <del>사실 이 주소가 외부에서 노출되면 안된다. 외부 IP의 요청인 경우 작동하지 않도록 프로그램을 수정.</ |
+ | * 일지 중지 (pause) | ||
+ | * 볼륨 조정 (up, down, mute) | ||
research/rpi_radio.1375011491.txt.gz · 마지막으로 수정됨: 2014/10/09 21:23 (바깥 편집)