【问题标题】:Does the lastFM api provide youtube links?lastFM api 是否提供 youtube 链接?
【发布时间】:2017-06-23 11:45:01
【问题描述】:

我正在制作一个列出热门歌曲的 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 链接。开发者是如何做到这一点的?

【问题讨论】:

  • 请提供一些上下文。例如,为什么第二个链接与第一个链接有任何关系?你期望会发生什么?为什么第一个链接与 YouTube 有任何关系?请阅读:How do I ask a good question?
  • 您好,先生。我已经编辑了这个问题。希望现在更有意义。
  • 好多了。这不是我的专业领域,但希望这个问题足够好,其他人现在可以回答。虽然我仍然不确定这与 Android 有什么关系...
  • 老实说这是我第一次在 SO 上发帖。我应该删除标签吗?
  • 我可以看到你是新人,你只有 1 个声望 :P 至于你是否应该删除标签,正如我所说,这不是我的专业领域,所以我不知道。你觉得有关系吗?如果相关,请留下,否则删除。

标签: api last.fm


【解决方案1】:

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 部分在最后)。

黑客愉快。

【讨论】:

    猜你喜欢
    • 2021-01-06
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多