使用相册的getInfo()不会返回曲目

时间:2013-10-27 12:33:11

标签: php api last.fm

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

我搜索了谷歌和谷歌的其他人,似乎没有人有这个问题......奇怪的是......

根据文档,我应该得到一个曲目列表。不。纳达。我确实得到了数据,所以我的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"
    }
  }
}

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

Last.FM是否更改了相册的getInfo()结果并且没有更新文档?我错过了什么吗?我正在将所有必需的参数传递给电话。

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

2 个答案:

答案 0 :(得分: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++;
        }

希望这有帮助。

答案 1 :(得分: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;
            }
        }