Обложки альбомов для песен

Понадобилось мне тут показывать обложки для песен в плеере на сайте онлайн радиостанции chebfm и тут проблема что lastfm прикрыт он на территории РФ что есть очередной повод искать трактор замену сервису. Вы скажете ну есть же musicbrainz!
Да шикарный сервис с шикарным API всё просто:
Делаем запрос на урл
Код PHP:
  1. file_get_contents('http://www.musicbrainz.org/ws/2/recording?query='+title+'AND artist:'+artist);
Получаем XML строку которую разбираем, находим Release ID дальше ещё один запрос:
Код PHP:
  1. file_get_contents('http://coverartarchive.org/release/'+release_id);
Который нас переправляет на
Код PHP:
  1. http://archive.org/download/mbid-RELEASE_ID/index.json
И да опять жопа - archive.org заблочен в РФ...клёва да?
Обложки альбомов для песен

Выбор пал на iTunes, его то ещё не закрыли...пока...
Итак, первый пункт убрать мусор чтобы искалось легче...готовим список замен:
Код PHP:
  1. $convert_array = array(
  2. "(" => "+",
  3. ")" => "+",
  4. " и " => "+",
  5. " feat " => "+",
  6. " - " => "+"
  7. );
Можете добавить свои, мне пока хватило. Дальше будет магия smile На входе в функцию я имею масив array такого формата
ID - Номер песни в базе
ARTIST - Исполнитель - тут и требуются чаще всего замены всего и вся на плюсы чтобы поисковику было проще искать
TRACK - Название трека
Ваши входные данные могут отличаться - я просто имя файла обложки формирую относительно ID песни, вы можете на основе чего либо другого. Короче решайте сами: Глядим в код:
Код PHP:
  1. //Запрос к ITUNES формируем:
  2. $string = file_get_contents('https://itunes.apple.com/search?term='.strtr($song['artist'],$convert_array)."+".strtr($song['title'],$convert_array));
  3. //Из него получаем JSON строку и формируем из неё ассоциированный массив
  4. $object = json_decode($string,1);
  5.  
  6. if($object['resultCount'] == 0)
  7. {
  8. //Если ни чего не нашли по запросу, пробуем ещё раз но только с именем артиста, вдруг повезёт
  9. $string = file_get_contents('https://itunes.apple.com/search?term='.strtr($song['artist'],$convert_array));
  10. $object = json_decode($string,1);
  11. //Если не повезло говорим мол ребята простите нифига
  12. if($object['resultCount'] == 0)
  13. {
  14. return false;
  15. }
  16. else
  17. {
  18. //Если повезло найти что то по артисту - берём первую попавшуюся обложку артиста...
  19. copy($object['results'][0]['artworkUrl100'],$_SERVER['DOCUMENT_ROOT']."/upload/song/covers/".md5($song['id']).'.jpg');
  20. }
  21. }
  22. else
  23. {
  24. //Если нашли по треку и артисту забираем её себе.
  25. copy($object['results'][0]['artworkUrl100'],$_SERVER['DOCUMENT_ROOT']."/upload/song/covers/".md5($song['id']).'.jpg');
  26. }
Обложек для российских исполнителей очень мало. А учитывая формат радио, то просто хрен да маленько...
Ну по коду понятно, если нашли забираем себе на всякий пожарный и выдаём со своего сервера. Думаю код достаточно понятный. Если что спрашивайте в комментариях.
Читайте также:
Комментарии (0)

Нет комментариев. Ваш будет первым!

Copyright 2016-2024 NeoChapay