在轨道列表中,artwork_url为空,具有单个轨道的值。错误?

时间:2014-08-04 06:21:44

标签: soundcloud

这样的随机查询

https://api.soundcloud.com/tracks.json?genre=Rnbhiphop

给出类似

的内容
[  
   {  
      "kind":"track",
      "id":161532719,
      (...)
      "artwork_url":null,
      (...)
   },
{  
      "kind":"track",
      "id":161532718,
      (...)
      "artwork_url":null,
      (...)
   },
   (..)
]

在许多情况下,artwork_url为null,尽管这不一致。

然而,当使用

查看单曲目ID 161532719(上面的列表中的第一个)时

http://api.soundcloud.com/tracks/161532719.json

我们得到了

{  
   "kind":"track",
   "id":161532719,
   (...)
   "artwork_url":"http://i1.sndcdn.com/artworks-000087026689-ogd56p-large.jpg?e76cf77",
   (...)
}

...奇怪的是,它显示了轨道161532719有效的artwork_url。许多其他曲目也是如此。

这是一个错误,还是我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

它看起来像集合端点(在这种情况下是类型),有一个后端错误,其中没有提取艺术作品。

null

与undefined不同,而是故意设置。如果遇到空值,则可以使用从单轨道端点收集的数据,将其从那里聚合到轨道数据。

如果您选择这样做,我建议您获取轨道端点的请求,第二个您拥有所需的ID,并使用ID进行更新。

答案 1 :(得分:1)

如果曲目的上传者没有附加图片,Soundcloud会显示上传者的头像。 但是,当你试图获得" artwork_url"从这种类型的轨道的JSONObject中,你将获得" null"。

要解决此问题,并使用相同的逻辑Soundcloud使用,只需添加:

String artUrl = trackJson.getString("artwork_url");
if (artUrl == "null") {
    JSONObject user = trackJson.getJSONObject("user");
    artUrl = user.getString("avatar_url");
}