【问题标题】:Obtaining a Library Playlists Artwork Apple Music API获取库播放列表艺术品 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 中获得它,还有其他方法可以获得艺术品吗?我已经坚持了一段时间,因此感谢您的帮助!

【问题讨论】:

    标签: android json apple-music apple-musickit


    【解决方案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。

      【讨论】:

      • 所以我检查了响应中的艺术品是曲目的艺术品而不是播放列表
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多