我目前正在尝试读取所有用户库播放列表。我需要以下内容:Id,Name,Description,Songs and Artwork。端点"https://api.music.apple.com/v1/me/library/playlists?limit=100"
返回以下响应:
{
"data": [
{
"id": "p.oOzAa4gIlaQaBVx",
"type": "library-playlists",
"href": "/v1/me/library/playlists/p.oOzAa4gIlaQaBVx",
"attributes": {
"name": "Drake",
"description": {
"standard": "🔥🔥🔥"
},
"hasCatalog": true,
"canEdit": true,
"playParams": {
"id": "p.oOzAa4gIlaQaBVx",
"kind": "playlist",
"isLibrary": true,
"globalId": "pl.u-Zmblx9rU02m2DXJ"
},
"dateAdded": "2017-10-30T21:39:45Z"
}
},
etc...
正如您所看到的,尽管API文档将艺术品指定为属性(https://developer.apple.com/documentation/applemusicapi/libraryplaylist/attributes
(,但Artwork属性不存在我尝试使用?include=artwork
,尽管它是一个属性而不是关系,但没有成功。有什么想法我可以取回艺术品吗?如果我不能从苹果音乐API获得它,还有其他方法可以获得艺术品吗?我已经被困在这上面一段时间了,所以任何帮助都很感激!
我看了一下,我觉得你错了。文档实际上说https://api.music.apple.com/v1/me/library/playlists
的响应没有artwork
属性,看看这里的
您可能可以在第一次调用的响应中找到Artwork
,并在这个https://api.music.apple.com/v1/catalog/{storefront}/playlists/{id}
中使用它,这里是文档。
我目前一直在API中获取播放列表"global id",我发现有些目录值在公共场合不可用。
当我试图为每个播放列表获取全局id时,有些已经存在,有些则不存在
如果"hascatalog" = true
,将能够获得所有Json字符串值。即使"hascatalog" = false
可用,也不会公开显示。
根据此处的文档,您只能在请求单个LibraryPlaylist时返回曲目。您将从这里的文档中看到,艺术作品是LibrarySong对象的一部分。因此,你不可能在一个电话中一次获得100个播放列表的所有艺术品,这似乎是你试图做的。
有两种方法可以解决这个问题:获取播放列表列表,然后对于每个播放列表,使用参数include=tracks再次调用播放列表端点。然后,作为回复的一部分,您将取回曲目列表,其中将包括艺术品。
如果你试图进行某种大规模的数据采集,这可能会导致太多的调用。您还可以解析对播放列表调用的每个响应,并创建曲目ID地图。然后向库/歌曲发送请求,库/歌曲在一次调用中最多可接受300个曲目ID。
目录/播放列表的文档指出,艺术品是响应的必需属性,但库/播放列表并非如此。也许这就是绊倒你的原因。
HTH。