2012-01-23 5 views
1

Все, Я пытаюсь разрешить пользователю искать песню. Скажите, что пользователь ищет Джека Джонсона, и я хочу отобразить все песни на iTunes Джеком Джонсоном. Я знаю, что нужно построить URL вроде следующего:Поиск в iTunes Music Library для поиска по API

http://itunes.apple.com/search?term=jack+johnson&limit=25&media=music&entity=musicArtist,musicTrack,album,mix,song

От программирования persepective, как бы я отправить на Apple? Если я копирую этот URL-адрес в свой браузер, я получаю некоторые результаты. Основываясь на этих результатах, как я могу проанализировать эти результаты, чтобы я мог отобразить их обратно пользователю? Хотел бы я использовать JSON, cURL, комбинацию из двух? Какой был бы самый эффективный способ сделать это?

Любая помощь здесь была бы принята с благодарностью!

ответ

4

Если я правильно понимаю, что вы хотите, может быть что-то вроде этого:

<?php 
if(isset($_POST['term'])) 
{ 
    $term = urlencode($_POST['term']); // user input 'term' in a form 
    $json = file_get_contents('http://itunes.apple.com/search?term='.$term.'&limit=25&media=music&entity=musicArtist,musicTrack,album,mix,song');  
    $array = json_decode($json, true); 

    foreach($array['results'] as $value) 
    { 
     echo '<p>'; 
     echo $value['artistName'].'<br />'; 
     echo $value['artistLinkUrl'].'<br />'; 
     echo $value['primaryGenreName']; 
     echo '</p>'; 
    } 
} 
?> 

<form method="post"> 
    <input type="text" name="term" /><input type="submit" value="Go" /> 
</form> 

Для получения дополнительных $ значения массива, попробуйте print_r($array);

+0

Я попытался сделать это с помощью цикла foreach, но он продолжает давать мне ошибку. Я пробовал этот код: $ json = file_get_contents ('http://itunes.apple.com/search?term=jack+johnson&limit=25&media=music&entity=musicArtist,musicTrack,album,mix,song'); $ itunes_results = json_decode ($ json, true); foreach ($ itunes_results-> results as $ results) { echo "{$ results-> artistName} \ n"; } Любые идеи о том, почему это не сработает? – user1048676

+1

@ ZulkaeryBasurl Это именно то, что я искал! Большое спасибо! – user1048676

+0

как я могу скачать песню из itune в php – Ravi

1

Вы бы использовали file_get_contents и разобрались в результатах с json_decode.

$js= json_decode(file_get_contents('http://itunes.apple.com/search?term=jack+johnson&limit=25&media=music&entity=musicArtist,musicTrack,album,mix,song')); 

$js теперь будет массив со всей информацией яблоко возвращается.

+0

Спасибо, у вас есть пример того, как читать возвращенные результаты json на основе строки поиска в вопросе? – user1048676

+0

@ user1048676, Там я обновил свой ответ. Позвольте мне знать, если у вас есть еще вопросы. – mowwwalker

1

Запрос должен быть выполнен по протоколу HTTP. JSON - это только формат для возвращаемых данных, а не метод его извлечения.

Есть много способов получить эти данные.

Простейший вариант - просто использовать file_get_contents, если ваш сервер имеет открытые обертки fopen (вероятно, это делает).

$data = file_get_contents('http://itunes.apple.com/search?term=jack+johnson&limit=25&media=music&entity=musicArtist,musicTrack,album,mix,song'); 

Curl также возможность использовать что-то вроде:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://itunes.apple.com/search?term=jack+johnson&limit=25&media=music&entity=musicArtist,musicTrack,album,mix,song"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$data = curl_exec($ch); 
curl_close($ch); 

После того, как вы извлекаться содержимое этой страницы, десериализации это легко, если у вас установлено расширение JSON. Если вы используете PHP 5.2.0+, то это часть ядра. В противном случае вам необходимо установить модуль PECL. See the PHP manual page on the extension for more information.

$response = json_decode($data); 
var_dump($response); 

Неэтериализованные данные - это объект. Вы можете использовать его так:

foreach ($response->results as $result) 
{ 
    echo "Artist: ".$result->artistName."<br />".PHP_EOL; 
} 
Смежные вопросы