Предоставляет ли API lastFM ссылки на YouTube?

Я делаю приложение для Android, в котором перечислены популярные песни. Я получаю информацию о песне через LastFM API. Я использую метод API: http://ws.audioscrobbler.com/2.0/?method=track.getInfo&api_key=YOUR_API_KEY&artist=cher&track=believe&format=json

Однако это не дает мне ссылки на YouTube, как это делает LastFM на своем веб-сайте. Есть ли способ воспроизвести эту функциональность? Должен ли я использовать другой метод API, о котором я не знаю, или я должен полностью полагаться на что-то другое?

Я немного поискал и наткнулся на http://downloadmarkt.be/lastfm-musicengine/example-search.php В результатах поиска также отображаются ссылки на YouTube. Как разработчик достигает этого?


person Anuj Dutt    schedule 23.06.2017    source источник
comment
Пожалуйста, предоставьте некоторый контекст. Например, почему вторая ссылка должна иметь какое-либо отношение к первой ссылке? Что вы ожидаете? Почему первая ссылка имеет какое-то отношение к YouTube? Прочтите это: Как задать хороший вопрос?   -  person Clonkex    schedule 23.06.2017
comment
Привет сэр. Я отредактировал вопрос. Надеюсь, теперь это имеет больше смысла.   -  person Anuj Dutt    schedule 23.06.2017
comment
Намного лучше. Это не моя область знаний, но, надеюсь, вопрос достаточно хорош, чтобы кто-то другой мог ответить на него сейчас. Хотя я до сих пор не уверен, какое это имеет отношение к Android...   -  person Clonkex    schedule 23.06.2017
comment
Ну, если честно, это первый раз, когда я опубликовал на SO. Должен ли я удалить тег?   -  person Anuj Dutt    schedule 23.06.2017
comment
Я вижу, вы новичок, у вас только 1 репутация :P Что касается того, следует ли вам удалить тег, ну, как я уже сказал, это не моя область знаний, поэтому я не знаю. Как вы думаете, это актуально? Если актуально, оставьте, иначе удалите.   -  person Clonkex    schedule 23.06.2017


Ответы (1)


В API last.fm нет прямых ссылок на видео с YouTube.

Размещенный вами веб-сайт ищет ссылки непосредственно на YouTube, а не на last.fm (см. javascript). в нижней части этого файла сценария).

Лучшее решение, которое я нашел: вы получаете URL-адрес песни страницы в ответе API last.fm,

<url>
   https://www.last.fm/music/Anathema/_/Fragile+Dreams
</url>

Эта страница содержит URL-адрес YouTube. Если вы откроете html-страницу, вы увидите там что-то вроде этого

data-youtube-id="CsHYSvlsDWw"
data-youtube-url="https://www.youtube.com/watch?v=CsHYSvlsDWw"

Используйте свой любимый метод анализа веб-страниц, чтобы получить эту информацию,

$ curl -sL https://www.last.fm/music/Anathema/_/Fragile+Dreams |
  hxnormalize -x 2> /dev/null |
  hxselect -s '\n' -c 'a::attr(data-youtube-id) |
  uniq
$ CsHYSvlsDWw

то есть вы получаете страницу, избавляетесь от любых несоответствий, а затем выбираете data-youtube-id. Вам нужно добавить новую строку между совпадениями, так как таких записей на странице вроде бы две. На последнем шаге вы берете один из двух похожих результатов (уникальная часть в конце).

Удачного взлома.

person mihai    schedule 21.05.2019