0

我正在使用 Last.FM api 并使用这个包http://www.last.fm/api/show/album.getInfo

我在谷歌搜索了 SO 和其他,似乎没有人遇到这个问题......奇怪......

根据文档,我应该得到一个曲目列表。没有。纳达。我确实取回了数据,所以我的 API 调用正常工作。我的应用程序没有被列入黑名单,我可以从 last.fm 获取其他所有内容,但是缺少曲目……其他所有内容都如所述。- 这是我调用的 var_dump() :

array(10) {
  ["name"]=>
  string(15) "All Hallow's EP"
  ["artist"]=>
  string(3) "AFI"
  ["lastfmid"]=>
  string(7) "2027169"
  ["mbid"]=>
  string(0) ""
  ["url"]=>
  string(46) "http://www.last.fm/music/AFI/All+Hallow%27s+EP"
  ["releasedate"]=>
  bool(false)
  ["image"]=>
  array(3) {
    ["small"]=>
    string(50) "http://userserve-ak.last.fm/serve/34s/35949507.png"
    ["medium"]=>
    string(50) "http://userserve-ak.last.fm/serve/64s/35949507.png"
    ["large"]=>
    string(51) "http://userserve-ak.last.fm/serve/174s/35949507.png"
  }
  ["listeners"]=>
  string(5) "47506"
  ["playcount"]=>
  string(6) "316093"
  ["toptags"]=>
  array(5) {
    [0]=>
    array(2) {
      ["name"]=>
      string(4) "punk"
      ["url"]=>
      string(27) "http://www.last.fm/tag/punk"
    }
    [1]=>
    array(2) {
      ["name"]=>
      string(12) "albums i own"
      ["url"]=>
      string(39) "http://www.last.fm/tag/albums%20i%20own"
    }
    [2]=>
    array(2) {
      ["name"]=>
      string(9) "punk rock"
      ["url"]=>
      string(34) "http://www.last.fm/tag/punk%20rock"
    }
    [3]=>
    array(2) {
      ["name"]=>
      string(13) "hardcore punk"
      ["url"]=>
      string(38) "http://www.last.fm/tag/hardcore%20punk"
    }
    [4]=>
    array(2) {
      ["name"]=>
      string(3) "afi"
      ["url"]=>
      string(26) "http://www.last.fm/tag/afi"
    }
  }
}

是的,我用不同的专辑试过这个,我知道最后一个调频有曲目......(这张专辑:http ://www.last.fm/music/AFI/All+Hallow%27s+EP )......甚至一个可播放的曲目。

那么 Last.FM 是否更改了专辑的 getInfo() 结果并且没有更新文档?我错过了什么吗?我将所有必需的参数传递给调用。

基本上,我想我的问题是:其他人有同样的问题还是只有我?

4

2 回答 2

0

我的修复看起来像这样:

        if ( ! empty($call->album->tracks))
        {
            for( $n = 0 ; $n < count($call->album->tracks->track); $n++)
            {
                // This is identical to how tags is done...
                $info['tracks'][$n]['name'] = (string) $call->album->tracks->track[$n]->name;
                $info['tracks'][$n]['url'] = (string) $call->album->tracks->track[$n]->url;
            }
        }
于 2014-08-13T03:32:44.330 回答
0

YOO 伙计们,我想通了。您使用的 API 不完整。

去看看album.php和函数getInfo($methodVars); 你会看到轨道没有分配给返回变量。

我在第 134 行附近添加了以下内容:

        $i = 0;
        foreach ( $call->album->tracks->track as $track ) {
            $info['tracks'][$i]['name'] = (string) $track->name;
            $info['tracks'][$i]['rank'] =(string)$track['rank'][0];
            $info['tracks'][$i]['duration'] = (string) $track->duration;
            $i++;
        }

希望这可以帮助。

于 2014-02-12T14:43:49.067 回答