我正在制作一个列出热门歌曲的Android应用程序。我通过LastFM API获取歌曲详细信息。我使用的API方法是http://ws.audioscrobbler.com/2.0/?method=track.getInfo&api_key=YOUR_API_KEY&artist=cher&track=believe&format=json
但是,这并没有像LastFM在其网站上所做的那样为我提供YouTube链接。有没有办法让我复制这个功能?我应该使用另一种我不知道的API方法,还是应该完全依赖其他方法?
我进行了一些搜索,但我遇到http://downloadmarkt.be/lastfm-musicengine/example-search.php在搜索结果中,还会显示YouTube链接。开发人员如何实现这一目标?
答案 0 :(得分:0)
last.fm API中没有指向YouTube视频的直接链接。
您发布的网站直接在youtube上而不是在last.fm上搜索链接(请参见该脚本文件底部的javascript)。
我找到的最佳解决方案:您在last.fm API响应中确实获得了页面歌曲的网址,
<url>
https://www.last.fm/music/Anathema/_/Fragile+Dreams
</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
。您需要在匹配项之间添加新行,因为页面上似乎有两个这样的条目。最后一步,您将获得两个相似结果之一(然后是uniq部分)。
黑客很开心。