웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
-긴급소스 수정본- winamp 방송정보 알아내기
2004.09.11 19:01
멀티서버의 주소를 첫번째 주소에 정보만 수집하는 버그가 발견되었습니다
어떤 분의 문의로 바뀌기 되었습니다 ^^;;
- 현재 시간 9월 12일 오전 8:01분 약간의 기능을 추가 수정합니다 -
기능추가한것은 방송주소를 전달하지 않으면 무한루프를 도는현상...
방송주소를 전달하지 않을경우 에러메세지 출력
에러메세지 내용 - set_ip() 메서드 에러-방송주소를 써주세요
winamp 방송정보 클레스 정의 문서(cast_info.php)
<?
class winamp_cast_info {
#-----------------------------
var $ip;
var $pls_file_name;
var $port;
var $use_server;
var $server_type;
var $m_server_ip_list = array();
var $s_server_ip;
var $info = array();
var $onAir = 0;
var $tmp_hms = array();
# 서버가 죽었는가 않죽었는가
function server_on(){
if($this->port){
$data = $this->Read_Data($this->ip,$this->port,$this->pls_file_name);
}else{
$data = $this->Read_Data($this->ip,80,$this->pls_file_name);
}
if(eregi("http://(([a-zA-Z0-9]){1,}).(([a-zA-Z0-9]){1,}).(([a-zA-Z0-9]){1,}).(([a-zA-Z0-9]){1,}):(([0-9]){1,})", $data)){
$this->onAir = 1;
}else{
$this->onAir = 0;
}
//echo "$data";
}
#
function set_ip($ip){
if(!$ip){ echo "set_ip() 메서드 에러-방송주소를 써주세요"; exit;}
# 아이피 필터
$this->ip_filter($ip);
# 어떤 회사서버 사용?
$this->what_use_server();
# 서버가 죽었나 살았나
$this->server_on();
if($this->onAir){
# 멀티서버인가?
$this->what_server_type();
$this->cast_info();
}
}
##########################
# 아이피필터 #
##########################
function ip_filter($ip){
$ip = str_replace("http://", "", $ip);
# ip주소와 pls화일 이름 분리
$ip_explode = explode("/",$ip);
$this->pls_file_name = $ip_explode[1];
# ip주소에서 ip 와 port 분리
$ip_explode1 = explode(":",$ip_explode[0]);
$this->ip = $ip_explode1[0];
$this->port = $ip_explode1[1];
}
##########################
# 진짜 멀티서버인가 검사 #
##########################
function real_m_server(){
$r_data = $this->Read_Data($this->ip,80,$this->pls_file_name);
$data_array = spliti( "file[0-9]{1,2}", $r_data);
for($i=0;$i <= sizeof($data_array);$i++){
if(eregi("http://(([a-zA-Z0-9]){1,}).(([a-zA-Z0-9]){1,}).(([a-zA-Z0-9]){1,}).(([a-zA-Z0-9]){1,}):(([0-9]){1,})", $data_array[$i],$aa)){
if($tmp != $data_array[$i]){ $this->m_server_ip_list[] = $aa[0]; }
$tmp = $data_array[$i];
}
}
if(sizeof($this->m_server_ip_list) > 1){
$end = m;
}else{
$end = s;
$this->s_server_ip = $this->m_server_ip_list[0];
}
return $end;
}
##########################
# 서버 타입은 멀티냐 싱글이냐 #
##########################
function what_server_type(){
if($this->port){
$this->server_type = "s";
$this->s_server_ip = "http://" . $this->ip . ":". $this->port;
}else if(!$this->port){
$this->server_type = $this->real_m_server();
}
}
##########################
# 어떤 회사의 서버를 사용하는가 #
##########################
function what_use_server(){
# 인라이브 서버
if(eregi(".inlive.co.kr", $this->ip)){
$this->use_server = "inLive";
# 세이케스트 서버
}else if(eregi(".saycast.com",$this->ip)){
$this->use_server = "sayCast";
# 세이케스트 서버
}else if(eregi(".diodeo.com",$this->ip)){
$this->use_server = "Diodeo";
# 일반 서버
}else{
$this->use_server = "normal";
}
}
#####################
# 데이타 읽어오기 메소드 #
#####################
function Read_Data($ip,$port,$file_name){
$fp = @fsockopen($ip, $port, $errno, $errstr);
if($fp){
if($file_name == "index.html"){
fputs ($fp, "GET /index.html HTTP/1.0nUser-Agent: Mozilla/4.0nn");
}else if($file_name == "played.html"){
fputs ($fp, "GET /played.html HTTP/1.0nUser-Agent: Mozilla/4.0nn");
}else {
$out = "GET /${file_name} HTTP/1.1rn";
$out .= "Host: $iprn";
$out .= "Connection: Closernrn";
fputs($fp, $out);
}
while(!feof($fp)){ $data .= fgets($fp,1024);}
fclose($fp);
}else{
$data = 0;
}
return $data;
}
#####################
# 방송정보 설정 메소드 #
#####################
function set_cast_info($info_data){
$info_data = strip_tags ("$info_data");
if(eregi("with (([0-9]){1,}) of (([0-9]){1,}) listeners", $info_data,$arr)){
if($this->server_type == "m"){
# 청취자수
$this->info[now_listen] += $arr[1];
# 최대 청취자수
$this->info[max_listen_persons] += $arr[3];
}else if($this->server_type == "s"){
# 청취자수
$this->info[now_listen] = $arr[1];
# 최대 청취자수
$this->info[max_listen_persons] = $arr[3];
}
}
if(eregi("(([1-9]){2,3}) kbps",$info_data,$arr)){ $this->info[kbps] = $arr[1]; }
$one = explode ("Listener Peak:", $info_data);
$two = explode ("Average Listen Time:",$one[1]);
if($this->server_type == "m"){
$this->info[peak] += $two[0];
}else if($this->server_type == "s"){
$this->info[peak] = $two[0];
}
$data = $two[1];
# --------------------
$val = array("a_l_time","title","genre","url","aim","irc");
$explode_word = array("Stream Title:","Stream Genre:","Stream URL:","Stream AIM:","Stream IRC:","Current Song:");
for($i=0;$i < 6;$i++){
$one = explode ($explode_word[$i], $data);
$this->info[$val[$i]] = $one[0];
$data = $one[1];
}
# --------------------
$this->info[song] = $data;
$this->info[title] = $this->str_re(title,$this->info[title]);
$this->info[song] = $this->str_re(song,$this->info[song]);
$this->info[aim] = urldecode($this->info[aim]);
$this->tmp_hms[] = $this->info[a_l_time];
if($this->server_type == "m"){
$this->time_array_exe();
}
}
#####################
# 방송정보 가져오기 시작 #
#####################
function cast_info(){
if($this->server_type == "s"){
$ip = str_replace("http://", "", $this->s_server_ip);
# ip주소에서 ip 와 port 분리
$ip_explode = explode(":",$ip);
$ip = $ip_explode[0];
$port = $ip_explode[1];
$info_data = $this->Read_Data($ip,$port,"index.html");
# 방송정보 설정
$this->set_cast_info($info_data);
}else if($this->server_type == "m"){
for($i=0;$i < sizeof($this->m_server_ip_list);$i++){
$ip = str_replace("http://", "", $this->m_server_ip_list[$i]);
# ip주소에서 ip 와 port 분리
$ip_explode = explode(":",$ip);
$ip = $ip_explode[0];
$port = $ip_explode[1];
$info_data = $this->Read_Data($ip,$port,"index.html");
# 방송정보 설정
$this->set_cast_info($info_data);
}
}
//return $info_data;
}
function get_history(){
if($this->server_type == "m"){
//$m_server_ip_list[0];
//$this->m_server_ip_list[0];
$this->ip_filter($this->m_server_ip_list[0]);
$info_data = $this->Read_Data($this->ip,$this->port,"played.html");
}else if($this->server_type == "s"){
$this->ip_filter($this->s_server_ip);
$info_data = $this->Read_Data($this->ip,$this->port,"played.html");
}
$info_data = eregi_replace ("Copyright Nullsoft Inc. 1998-200([0-9]){1}", "", $info_data);
$info_data = strip_tags ("$info_data",'<td>'+ ');
$haha = explode ("<td>", $info_data);
for($i=0;$i <= sizeof($haha);$i++){
#$haha 배열변수의 $i번째에 속한것이 시간이면 배열변수 $time에 넣는다
if(eregi("(([0-9]){2}):(([0-9]){2}):(([0-9]){2})", $haha[$i])){
$time[] = strip_tags ($haha[$i]);
}else{
$tmp[] = $haha[$i];
}
}
for($i=0;$i <= sizeof($tmp)-1;$i++){
# $tmp배열에 $i 번째에 속한 내용이 타이틀을 경우 배열변수 $history_title에 넣는다
if(!$this->history_title_ck($tmp[$i])){ $history_title[] = strip_tags ($tmp[$i]); }
}
# 이차원 배열로 시간과 타이틀을 묶어버린다
$history = array("time" => $time, "title" => $history_title);
return $history;
//echo "$info_data";
}
# 방송히스토리 타이틀인가 아닌가를 구분
function history_title_ck($title){
if(eregi("HTTP/1.0 200 OK",$title) or eregi("Server Version",$title) or eregi("Played @",$title)
or eregi("Song Title",$title) or eregi("Current Song",$title) or eregi("Written by Stephen 'Tag Loomis",$title) or eregi("Copyright Nullsoft Inc. 1998-200([0-9]){1}",$title)){ $v = 1; }else{ $v = 0; }
return $v;
}
# 특정문자 없애기
function str_re($what,$value){
if($what == "title"){
$end = str_replace("Content Type: audio/mpeg","", $value);
}else if($what == "song"){
$end = str_replace("Written by Stephen 'Tag Loomis, Tom Pepper and Justin Frankel","", $value);
$end = eregi_replace ("Copyright Nullsoft Inc. 1998-200([0-9]){1}", "", $end);
//$end = str_replace("Copyright Nullsoft Inc. 1998-2000","",$end);
//$end = str_replace("Copyright Nullsoft Inc. 1998-2002","", $end);
//$end = str_replace("Copyright Nullsoft Inc. 1998-2004","", $end);
}
return $end;
}
# 멀티 서버의 평균청취시간을 구하는 메소드
function time_array_exe(){
# ---- 루프문 ----
for($i=0;$i < sizeof($this->tmp_hms);$i++){
### 시간
if(eregi("([0-9]{1,2})h",$this->tmp_hms[$i],$tmp_array)){
$h += $tmp_array[1];
}else{
$h += 0;
}
### 분
if(eregi("([0-9]{1,2})m",$this->tmp_hms[$i],$tmp_array)){
$m += $tmp_array[1];
}else{
$m += 0;
}
### 초
if(eregi("([0-9]{1,2})s",$this->tmp_hms[$i],$tmp_array)){
$s += $tmp_array[1];
}else{
$s += 0;
}
if($s >= 60){
$m +=1;
$s = $s - 60;
if($s == 60){
$m +=1;
$s = 0;
}
}
if($m >= 60){
$h +=1;
$m = $m - 60;
if($m == 60){
$h +=1;
$m = 0;
}
}
}
# ---- 루프문 ----
$this->info[a_l_time] = "${h}h ${m}m ${s}s";
}
#-----------------------------
}
?>
winamp 방송정보를 확인하는 문서(cast_view_info.php)
<?
include("cast_info.php");
$winamp = new winamp_cast_info;
# 테스트 할때 ip주소에서 주석문만 빼주세요
// 마이케스트 주소
//$ip = "http://mycast2003.inlive.co.kr/listen.pls";
// 뮤클케스트 주소
//$ip = "http://www.mukulcast.com/listen.pls";
// 세이개인 방송주소는 http://www.saycast.com/CJ아이디.pls 입니다
//$ip = "http://www.saycast.com/tkfkd144000.pls";
//$ip = "http://www.saycast.com/zylove3478.pls";
// 세이케스트에속한 미인방송국 주소
$ip = "http://miin.jukeonfm.com/listen.pls";
// 디어데오 서버를 사용하는 티나방송국
//$ip = "http://TINA24.diodeo.com/listen.pls";
$winamp->set_ip($ip);
# 방송중인지 아닌지 알려주는
# 변수 $winamp->onAir (1(참): On-Air,0(거짓): Off-air)
if($winamp->onAir){
# 방송주소 - $winamp->ip;
# pls화일이름 - $winamp->pls_file_name;
# 사용서버(inLive,sayCast,Diodeo) - $winamp->use_server;
# 서버타입(멀티(m) or 싱글(s)) - $winamp->server_type;
# 서버정보 $winamp->info[원하는값];
# kbps - 방송음질
# title - 방송제목
# song - 현재음악
# genre - 장르
# url - URL
# aim - aim값 (보통이값은 인라이브에서 CJ이름으로 쓰임)
# irc - irc 채팅채널 이름
# a_l_time - 방송청취평균시간
# now_listen - 현재청취자수
# max_listen_persons - 최고청취가능인원
# peak - 최대로 청취한 인원
# 예) $winamp->info[kbps];
# 주의
echo $winamp->ip;
echo "<br>";
echo "서버타입:" . $winamp->server_type;
echo "<br>";
echo "방송제목:" . $winamp->info[title];
echo "<br>";
echo "나오는곡:" . $winamp->info[song];
echo "<br>";
echo "청취자수:" . $winamp->info[now_listen];
echo "<br>";
# 최대 청취자수
echo "최대청취가능수:" . $winamp->info[max_listen_persons];
echo "<br>";
echo "최고청취률:". $winamp->info[peak];
echo "<br>";
# 서버가 멀티 서버일경우 ip주소는
# $winamp->m_server_ip_list 라는 배열 변수에 넣어진다
# 싱글서버일 경우 ip주소는 $winamp->s_server_ip
if($winamp->server_type == "m"){
for($i=0; $i < sizeof($winamp->m_server_ip_list);$i++){
echo $winamp->m_server_ip_list[$i];
echo "<br>";
}
}else if($winamp->server_type == "s"){
echo $winamp->s_server_ip;
echo "<br>";
}
## 방송히스토리
#$history = $winamp->get_history();
## 배열변수로 전달됩니다
#$title = $history["title"];
#$time = $history["time"];
#for($i=0;$i < sizeof($title)-1;$i++){
#echo "$i $title[$i] ";
#echo "$time[$i]";
#echo "<br>";
#}
}else{
echo "방송중이지 않습니다";
}
?>
어떤 분의 문의로 바뀌기 되었습니다 ^^;;
- 현재 시간 9월 12일 오전 8:01분 약간의 기능을 추가 수정합니다 -
기능추가한것은 방송주소를 전달하지 않으면 무한루프를 도는현상...
방송주소를 전달하지 않을경우 에러메세지 출력
에러메세지 내용 - set_ip() 메서드 에러-방송주소를 써주세요
winamp 방송정보 클레스 정의 문서(cast_info.php)
<?
class winamp_cast_info {
#-----------------------------
var $ip;
var $pls_file_name;
var $port;
var $use_server;
var $server_type;
var $m_server_ip_list = array();
var $s_server_ip;
var $info = array();
var $onAir = 0;
var $tmp_hms = array();
# 서버가 죽었는가 않죽었는가
function server_on(){
if($this->port){
$data = $this->Read_Data($this->ip,$this->port,$this->pls_file_name);
}else{
$data = $this->Read_Data($this->ip,80,$this->pls_file_name);
}
if(eregi("http://(([a-zA-Z0-9]){1,}).(([a-zA-Z0-9]){1,}).(([a-zA-Z0-9]){1,}).(([a-zA-Z0-9]){1,}):(([0-9]){1,})", $data)){
$this->onAir = 1;
}else{
$this->onAir = 0;
}
//echo "$data";
}
#
function set_ip($ip){
if(!$ip){ echo "set_ip() 메서드 에러-방송주소를 써주세요"; exit;}
# 아이피 필터
$this->ip_filter($ip);
# 어떤 회사서버 사용?
$this->what_use_server();
# 서버가 죽었나 살았나
$this->server_on();
if($this->onAir){
# 멀티서버인가?
$this->what_server_type();
$this->cast_info();
}
}
##########################
# 아이피필터 #
##########################
function ip_filter($ip){
$ip = str_replace("http://", "", $ip);
# ip주소와 pls화일 이름 분리
$ip_explode = explode("/",$ip);
$this->pls_file_name = $ip_explode[1];
# ip주소에서 ip 와 port 분리
$ip_explode1 = explode(":",$ip_explode[0]);
$this->ip = $ip_explode1[0];
$this->port = $ip_explode1[1];
}
##########################
# 진짜 멀티서버인가 검사 #
##########################
function real_m_server(){
$r_data = $this->Read_Data($this->ip,80,$this->pls_file_name);
$data_array = spliti( "file[0-9]{1,2}", $r_data);
for($i=0;$i <= sizeof($data_array);$i++){
if(eregi("http://(([a-zA-Z0-9]){1,}).(([a-zA-Z0-9]){1,}).(([a-zA-Z0-9]){1,}).(([a-zA-Z0-9]){1,}):(([0-9]){1,})", $data_array[$i],$aa)){
if($tmp != $data_array[$i]){ $this->m_server_ip_list[] = $aa[0]; }
$tmp = $data_array[$i];
}
}
if(sizeof($this->m_server_ip_list) > 1){
$end = m;
}else{
$end = s;
$this->s_server_ip = $this->m_server_ip_list[0];
}
return $end;
}
##########################
# 서버 타입은 멀티냐 싱글이냐 #
##########################
function what_server_type(){
if($this->port){
$this->server_type = "s";
$this->s_server_ip = "http://" . $this->ip . ":". $this->port;
}else if(!$this->port){
$this->server_type = $this->real_m_server();
}
}
##########################
# 어떤 회사의 서버를 사용하는가 #
##########################
function what_use_server(){
# 인라이브 서버
if(eregi(".inlive.co.kr", $this->ip)){
$this->use_server = "inLive";
# 세이케스트 서버
}else if(eregi(".saycast.com",$this->ip)){
$this->use_server = "sayCast";
# 세이케스트 서버
}else if(eregi(".diodeo.com",$this->ip)){
$this->use_server = "Diodeo";
# 일반 서버
}else{
$this->use_server = "normal";
}
}
#####################
# 데이타 읽어오기 메소드 #
#####################
function Read_Data($ip,$port,$file_name){
$fp = @fsockopen($ip, $port, $errno, $errstr);
if($fp){
if($file_name == "index.html"){
fputs ($fp, "GET /index.html HTTP/1.0nUser-Agent: Mozilla/4.0nn");
}else if($file_name == "played.html"){
fputs ($fp, "GET /played.html HTTP/1.0nUser-Agent: Mozilla/4.0nn");
}else {
$out = "GET /${file_name} HTTP/1.1rn";
$out .= "Host: $iprn";
$out .= "Connection: Closernrn";
fputs($fp, $out);
}
while(!feof($fp)){ $data .= fgets($fp,1024);}
fclose($fp);
}else{
$data = 0;
}
return $data;
}
#####################
# 방송정보 설정 메소드 #
#####################
function set_cast_info($info_data){
$info_data = strip_tags ("$info_data");
if(eregi("with (([0-9]){1,}) of (([0-9]){1,}) listeners", $info_data,$arr)){
if($this->server_type == "m"){
# 청취자수
$this->info[now_listen] += $arr[1];
# 최대 청취자수
$this->info[max_listen_persons] += $arr[3];
}else if($this->server_type == "s"){
# 청취자수
$this->info[now_listen] = $arr[1];
# 최대 청취자수
$this->info[max_listen_persons] = $arr[3];
}
}
if(eregi("(([1-9]){2,3}) kbps",$info_data,$arr)){ $this->info[kbps] = $arr[1]; }
$one = explode ("Listener Peak:", $info_data);
$two = explode ("Average Listen Time:",$one[1]);
if($this->server_type == "m"){
$this->info[peak] += $two[0];
}else if($this->server_type == "s"){
$this->info[peak] = $two[0];
}
$data = $two[1];
# --------------------
$val = array("a_l_time","title","genre","url","aim","irc");
$explode_word = array("Stream Title:","Stream Genre:","Stream URL:","Stream AIM:","Stream IRC:","Current Song:");
for($i=0;$i < 6;$i++){
$one = explode ($explode_word[$i], $data);
$this->info[$val[$i]] = $one[0];
$data = $one[1];
}
# --------------------
$this->info[song] = $data;
$this->info[title] = $this->str_re(title,$this->info[title]);
$this->info[song] = $this->str_re(song,$this->info[song]);
$this->info[aim] = urldecode($this->info[aim]);
$this->tmp_hms[] = $this->info[a_l_time];
if($this->server_type == "m"){
$this->time_array_exe();
}
}
#####################
# 방송정보 가져오기 시작 #
#####################
function cast_info(){
if($this->server_type == "s"){
$ip = str_replace("http://", "", $this->s_server_ip);
# ip주소에서 ip 와 port 분리
$ip_explode = explode(":",$ip);
$ip = $ip_explode[0];
$port = $ip_explode[1];
$info_data = $this->Read_Data($ip,$port,"index.html");
# 방송정보 설정
$this->set_cast_info($info_data);
}else if($this->server_type == "m"){
for($i=0;$i < sizeof($this->m_server_ip_list);$i++){
$ip = str_replace("http://", "", $this->m_server_ip_list[$i]);
# ip주소에서 ip 와 port 분리
$ip_explode = explode(":",$ip);
$ip = $ip_explode[0];
$port = $ip_explode[1];
$info_data = $this->Read_Data($ip,$port,"index.html");
# 방송정보 설정
$this->set_cast_info($info_data);
}
}
//return $info_data;
}
function get_history(){
if($this->server_type == "m"){
//$m_server_ip_list[0];
//$this->m_server_ip_list[0];
$this->ip_filter($this->m_server_ip_list[0]);
$info_data = $this->Read_Data($this->ip,$this->port,"played.html");
}else if($this->server_type == "s"){
$this->ip_filter($this->s_server_ip);
$info_data = $this->Read_Data($this->ip,$this->port,"played.html");
}
$info_data = eregi_replace ("Copyright Nullsoft Inc. 1998-200([0-9]){1}", "", $info_data);
$info_data = strip_tags ("$info_data",'<td>'+ ');
$haha = explode ("<td>", $info_data);
for($i=0;$i <= sizeof($haha);$i++){
#$haha 배열변수의 $i번째에 속한것이 시간이면 배열변수 $time에 넣는다
if(eregi("(([0-9]){2}):(([0-9]){2}):(([0-9]){2})", $haha[$i])){
$time[] = strip_tags ($haha[$i]);
}else{
$tmp[] = $haha[$i];
}
}
for($i=0;$i <= sizeof($tmp)-1;$i++){
# $tmp배열에 $i 번째에 속한 내용이 타이틀을 경우 배열변수 $history_title에 넣는다
if(!$this->history_title_ck($tmp[$i])){ $history_title[] = strip_tags ($tmp[$i]); }
}
# 이차원 배열로 시간과 타이틀을 묶어버린다
$history = array("time" => $time, "title" => $history_title);
return $history;
//echo "$info_data";
}
# 방송히스토리 타이틀인가 아닌가를 구분
function history_title_ck($title){
if(eregi("HTTP/1.0 200 OK",$title) or eregi("Server Version",$title) or eregi("Played @",$title)
or eregi("Song Title",$title) or eregi("Current Song",$title) or eregi("Written by Stephen 'Tag Loomis",$title) or eregi("Copyright Nullsoft Inc. 1998-200([0-9]){1}",$title)){ $v = 1; }else{ $v = 0; }
return $v;
}
# 특정문자 없애기
function str_re($what,$value){
if($what == "title"){
$end = str_replace("Content Type: audio/mpeg","", $value);
}else if($what == "song"){
$end = str_replace("Written by Stephen 'Tag Loomis, Tom Pepper and Justin Frankel","", $value);
$end = eregi_replace ("Copyright Nullsoft Inc. 1998-200([0-9]){1}", "", $end);
//$end = str_replace("Copyright Nullsoft Inc. 1998-2000","",$end);
//$end = str_replace("Copyright Nullsoft Inc. 1998-2002","", $end);
//$end = str_replace("Copyright Nullsoft Inc. 1998-2004","", $end);
}
return $end;
}
# 멀티 서버의 평균청취시간을 구하는 메소드
function time_array_exe(){
# ---- 루프문 ----
for($i=0;$i < sizeof($this->tmp_hms);$i++){
### 시간
if(eregi("([0-9]{1,2})h",$this->tmp_hms[$i],$tmp_array)){
$h += $tmp_array[1];
}else{
$h += 0;
}
### 분
if(eregi("([0-9]{1,2})m",$this->tmp_hms[$i],$tmp_array)){
$m += $tmp_array[1];
}else{
$m += 0;
}
### 초
if(eregi("([0-9]{1,2})s",$this->tmp_hms[$i],$tmp_array)){
$s += $tmp_array[1];
}else{
$s += 0;
}
if($s >= 60){
$m +=1;
$s = $s - 60;
if($s == 60){
$m +=1;
$s = 0;
}
}
if($m >= 60){
$h +=1;
$m = $m - 60;
if($m == 60){
$h +=1;
$m = 0;
}
}
}
# ---- 루프문 ----
$this->info[a_l_time] = "${h}h ${m}m ${s}s";
}
#-----------------------------
}
?>
winamp 방송정보를 확인하는 문서(cast_view_info.php)
<?
include("cast_info.php");
$winamp = new winamp_cast_info;
# 테스트 할때 ip주소에서 주석문만 빼주세요
// 마이케스트 주소
//$ip = "http://mycast2003.inlive.co.kr/listen.pls";
// 뮤클케스트 주소
//$ip = "http://www.mukulcast.com/listen.pls";
// 세이개인 방송주소는 http://www.saycast.com/CJ아이디.pls 입니다
//$ip = "http://www.saycast.com/tkfkd144000.pls";
//$ip = "http://www.saycast.com/zylove3478.pls";
// 세이케스트에속한 미인방송국 주소
$ip = "http://miin.jukeonfm.com/listen.pls";
// 디어데오 서버를 사용하는 티나방송국
//$ip = "http://TINA24.diodeo.com/listen.pls";
$winamp->set_ip($ip);
# 방송중인지 아닌지 알려주는
# 변수 $winamp->onAir (1(참): On-Air,0(거짓): Off-air)
if($winamp->onAir){
# 방송주소 - $winamp->ip;
# pls화일이름 - $winamp->pls_file_name;
# 사용서버(inLive,sayCast,Diodeo) - $winamp->use_server;
# 서버타입(멀티(m) or 싱글(s)) - $winamp->server_type;
# 서버정보 $winamp->info[원하는값];
# kbps - 방송음질
# title - 방송제목
# song - 현재음악
# genre - 장르
# url - URL
# aim - aim값 (보통이값은 인라이브에서 CJ이름으로 쓰임)
# irc - irc 채팅채널 이름
# a_l_time - 방송청취평균시간
# now_listen - 현재청취자수
# max_listen_persons - 최고청취가능인원
# peak - 최대로 청취한 인원
# 예) $winamp->info[kbps];
# 주의
echo $winamp->ip;
echo "<br>";
echo "서버타입:" . $winamp->server_type;
echo "<br>";
echo "방송제목:" . $winamp->info[title];
echo "<br>";
echo "나오는곡:" . $winamp->info[song];
echo "<br>";
echo "청취자수:" . $winamp->info[now_listen];
echo "<br>";
# 최대 청취자수
echo "최대청취가능수:" . $winamp->info[max_listen_persons];
echo "<br>";
echo "최고청취률:". $winamp->info[peak];
echo "<br>";
# 서버가 멀티 서버일경우 ip주소는
# $winamp->m_server_ip_list 라는 배열 변수에 넣어진다
# 싱글서버일 경우 ip주소는 $winamp->s_server_ip
if($winamp->server_type == "m"){
for($i=0; $i < sizeof($winamp->m_server_ip_list);$i++){
echo $winamp->m_server_ip_list[$i];
echo "<br>";
}
}else if($winamp->server_type == "s"){
echo $winamp->s_server_ip;
echo "<br>";
}
## 방송히스토리
#$history = $winamp->get_history();
## 배열변수로 전달됩니다
#$title = $history["title"];
#$time = $history["time"];
#for($i=0;$i < sizeof($title)-1;$i++){
#echo "$i $title[$i] ";
#echo "$time[$i]";
#echo "<br>";
#}
}else{
echo "방송중이지 않습니다";
}
?>
댓글 0
제목 | 글쓴이 | 날짜 |
---|---|---|
윈도우XP 서비스팩2 사용자인지 아닌지 판별하기 [22] | 天高馬肥[쉬드] | 2004.10.09 |
echo 안에 더블쿼테이션을 사용하기 [15] | 토토루 | 2004.10.05 |
trim 과 addslashes를 일괄처리하는 함수 [7] | BigStone | 2004.10.02 |
'' -> ""로 만들기(?) [2] | 플로렐라 | 2004.09.17 |
crontab 실제 사용 예제, 온라인 웹 게임 운영하기 (팁 + 오픈 소스 게임 소개 ^^;) [1] | 박용구 | 2004.09.14 |
날씨별로 다양한 말이나 음악 보여주기[수정] [4] | 로크 | 2004.09.13 |
-긴급소스 수정본- winamp 방송정보 알아내기 | 이승원 | 2004.09.11 |
랜덤으로 파일 가져와서 재생하고, 끝나면 다른 랜덤파일 또 재생하기.. | 겜방 | 2004.09.10 |
썸네일 생성시 unsharp mask활용할수 있는 팁..소스 | 앗싸~~ 곰세마리 | 2004.09.06 |
Echo 여러번호출? 할때 깜빡임 없애기 [5] | 신희돈 | 2004.09.03 |
서브디렉토리,파일까지 모두 삭제하는 함수. [5] | Lepas | 2004.08.24 |
4. include, require 그리고 뽀나쓰~ [8] | 티다 | 2004.08.19 |
공유 메모리 제어에 관한 함수 정리 (공유메모리) [5] | Simsim | 2004.08.16 |
접속자 IP 주소 텍스트로 저장 [7] | 천상원 | 2004.08.15 |
PHP프로그램에 간단한 인증(로그인) 걸기. [15] | Lepas | 2004.08.09 |
파일업로드시 파일명 중복되지 않게 저장하기... [6] | 김지호 | 2004.08.06 |
ISO 3166 국가코드로인한, 국가 검출소스 [4] | kein23 | 2004.08.04 |
IP 뒤에 두칸 글자 길이에 따라서 *로 나타내기 [13] | Sy-Tgt(stargt) | 2004.07.30 |
php로 이미지를 mysql디비 저장하고 보여주는 소스 [2] | QQQ | 2004.07.30 |
디비내용을 엑셀,워드,파워포인트 파일로 다운로드 시키는 방법 [13] | QQQ | 2004.07.30 |