php
PHP - 나만의 실시간 음악 정보 사이트 만들기
apple.com 의 음악 최신 차트 100곡을 RSS 를 이용하면 나만의 음악 정보 사이트를 구축할 수 있습니다. 실시간으로 말이죠.
나라별, 장르별로 음악 정보를 출력하고 싶다면 아래 코드 중 키 값을 넘겨주기만 하면 됩니다. 예를 들어 '한국'의 '애니메이션'을 출력하고 싶다면 국가 코드를 대문자로 설정하고, 장르는 숫자 값을 입력하면 원하는 값을 얻을 수 있습니다.
<?php
$str = api_itunes_Entry('KR', 29);
print_r($str);
전체 코드는 아래와 같습니다.
<?php
function api_itunes_Call( $country_id = 'US', $genre_id = '' )
{
if(!empty($genre_id))
{
$genre_id = '/genre=' . $genre_id;
}
$url = 'https://itunes.apple.com/'.$country_id.'/rss/topsongs/limit=100'.$genre_id.'/xml';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HEADER, 0);
$content = curl_exec($ch);
curl_close($ch);
// Remove the colon ":" in the <xxx:yyy> to be <xxxyyy>
$content = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $content);
$xml = simplexml_load_string($content);
$data = json_encode($xml);
return json_decode($data, true);
}
// 국가
function api_itunes_Countries( $country = null )
{
$countries = array
(
'US' => '미국',
'AR' => '아르헨티나',
'AU' => '호주',
'AT' => '오스트리아',
'BE' => '벨기에',
'BR' => '브라질',
'CA' => '캐나다',
'CL' => '칠레',
'CO' => '콜롬비아',
'CR' => '코스타리카',
'HR' => '크로아티아',
'CZ' => '체코 공화국',
'DK' => '덴마크',
'SV' => '엘살바도르',
'FI' => '핀란드',
'FR' => '프랑스',
'DE' => '독일',
'GR' => '그리스',
'GT' => '과테말라',
'HK' => '홍콩',
'HU' => '헝가리',
'IN' => '인도',
'ID' => '인도네시아',
'IE' => '아일랜드',
'IL' => '이스라엘',
'IT' => '이탈리아',
'JP' => '일본',
'KR' => '한국',
'KW' => '쿠웨이트',
'LB' => '레바논',
'LU' => '룩셈부르크',
'MY' => '말레이시아',
'MX' => '멕시코',
'NL' => '네덜란드',
'NZ' => '뉴질랜드',
'NO' => '노르웨이',
'PK' => '파키스탄',
'PA' => '파나마',
'PE' => '페루',
'PH' => '필리핀',
'PL' => '폴란드',
'PT' => '포르투갈',
'QA' => '카타르',
'RO' => '루마니아',
'RU' => '러시아',
'SA' => '사우디아라비아',
'SG' => '싱가포르',
'SK' => '슬로바키아',
'SI' => '슬로베니아',
'ZA' => '남아프리카 공화국',
'ES' => '스페인',
'LK' => '스리랑카',
'SE' => '스웨덴',
'CH' => '스위스',
'TW' => '대만',
'TH' => '태국',
'TR' => '터키',
'GB' => '영국',
'AE' => '아랍에미리트',
'VE' => '베네수엘라',
'VN' => '베트남'
);
$country = strtoupper(htmlentities($country));
if(!empty($country))
{
return $countries[$country];
}
return $countries;
}
// 장르
function api_itunes_Genres( $genr = null )
{
$genres = array
(
"0" => "모든 장르",
"20" => "얼터너티브",
"29" => "애니메이션",
"2" => "블루스",
"1122" => "브라질",
"4" => "어린이 음악",
"1232" => "중국 음악",
"22" => "기독교 복음",
"5" => "클래식",
"3" => "코미디",
"6" => "국가",
"17" => "댄스",
"50000063" => "디즈니",
"25" => "이지 리스닝",
"7" => "일렉트로닉 뮤직",
"28" => "엔카",
"50" => "피트니스 운동",
"50000064" => "프렌치 팝",
"50000068" => "독일 민속",
"50000066" => "독일 팝",
"18" => "힙합 랩",
"8" => "홀리데이",
"1262" => "인도",
"53" => "인스트루멘탈",
"27" => "제이팝",
"11" => "재즈",
"51" => "케이팝",
"52" => "가라오케",
"30" => "일본 가요",
"1243" => "한국 음악",
"12" => "라티노",
"13" => "뉴 에이지",
"9" => "오페라",
"14" => "팝",
"15" => "알앤비 소울",
"24" => "레게",
"21" => "락",
"10" => "싱어송 라이터",
"16" => "사운드 트랙",
"50000061" => "스포큰 워드",
"23" => "보컬",
"19" => "월드"
);
$genr = htmlentities($genr);
if(!empty($genr))
{
return $genres[$genr];
}
return $genres;
}
// 목록
function api_itunes_Entry( $country = '', $genres = '', $count = 1, $max = 101 )
{
$raw = api_itunes_Call($country, $genres);
$nlist = array();
foreach($raw['entry'] as $val)
{
if($count < $max)
{
$nlist[] = array(
'cover' => $val['imimage'][2],
'tiny_img' => $val['imimage'][0],
'title' => $val['imname'],
'name' => $val['imartist'],
'label' => $val['category']['@attributes']['label'],
'published' => $val['imreleaseDate']
);
}
$count++;
}
return $nlist;
}
0 댓글