获取库播放列表艺术品 Apple Music API

Posted

技术标签:

【中文标题】获取库播放列表艺术品 Apple Music API【英文标题】:Obtaining a Library Playlists Artwork Apple Music API 【发布时间】:2020-07-02 11:31:00 【问题描述】:

我目前正在尝试读取所有用户库播放列表。我需要的是以下内容: Id、名称、描述、歌曲和艺术品。端点"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) 我尝试使用?include=artwork,即使它是一个属性而不是关系,但它不起作用。有什么想法可以找回艺术品吗?如果我无法从苹果音乐 API 中获得它,还有其他方法可以获得艺术品吗?我已经坚持了一段时间,因此感谢您的帮助!

【问题讨论】:

【参考方案1】:

我看了一点,我认为你弄错了。文档实际上说https://api.music.apple.com/v1/me/library/playlists 的响应没有artwork 属性,看看here

您可能会在第一次呼叫的响应中找到Artwork,并在这个https://api.music.apple.com/v1/catalog/storefront/playlists/id 中使用它,这里是doc。

【讨论】:

响应没有,但对象被列为有一个 link 这意味着理论上我应该能够检索艺术品,我也不认为目录调用会起作用,因为播放列表是库播放列表,它们不公开。 不,该属性不是必需的,因此对于某些响应,它可能不存在。还有这个page,但我看不到你是如何检索播放列表中的歌曲的 那么我怎样才能获得图书馆播放列表的艺术作品? 看来你可以在我给你的最后一个链接中添加一个名为include的查询参数,这是一个LibraryPlaylist.Relationships,这会给你库中歌曲的结果,并且有机会艺术品就在里面。 我的 Apple Authentication SDK 出现了一些问题,您有没有机会检查一下并尝试一下?【参考方案2】:

目前我一直在努力在 API 中获取播放列表“全局 id”,我发现有一些目录值不公开。

当我尝试为每个播放列表获取全局 id 时,有些播放列表有,有些不存在。 如果"hascatalog" = true,就能得到所有的Json字符串值。 Incase "hascatalog" = false 即使可用,也不会公开显示。

【讨论】:

【参考方案3】:

根据文档here,您只能在请求单个 LibraryPlaylist 时获得返回的曲目。您将从文档here 中看到艺术品是 LibrarySong 对象的一部分。因此,您不能一次调用 100 个播放列表的所有作品,而这似乎是您正在尝试做的事情。

解决此问题的两种方法是获取播放列表列表,然后对于每个播放列表,使用参数 include=tracks 再次调用播放列表端点。然后,您将获得作为响应的一部分的曲目列表,其中将包括艺术品。

如果您尝试进行某种海量数据抓取,这可能会导致调用过多。您还可以解析对播放列表调用的每个响应并创建曲目 ID 地图。然后向库/歌曲发送请求,一次调用最多接受 300 个曲目 ID。

目录/播放列表的文档指出,艺术品是响应的必需属性,但库/播放列表并非如此。也许这就是让你绊倒的原因。

HTH。

【讨论】:

所以我检查了响应中的艺术品是曲目的艺术品而不是播放列表

以上是关于获取库播放列表艺术品 Apple Music API的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个像 Apple Music 艺术家页面上那样的融合导航栏

连接到 Apple Music

使用 JWT 获取 Apple Music SDK 的 userToken 时出错

从 iOS 媒体库中获取所有艺术家的列表

检测原生iOS Music App中当前正在播放的歌曲信息

如何在我自己的应用程序中实现 Apple Music 中的迷你播放器?