【问题标题】:How can I access track/album art from local music from the Spotify API?如何从 Spotify API 访问本地音乐的曲目/专辑封面?
【发布时间】:2013-11-22 12:44:37
【问题描述】:

我正在使用 Spotify API 作为我自己的学习项目来构建应用程序。 该应用程序的目的是为 Spotify 提供基于 Web 的远程控制,以便我可以使用手机或平板电脑在我的桌面上控制正在运行的 Spotify 实例。 Spotify 应用程序使用 websockets 与我的 Python Web 服务器通信,因此我的核心远程控制功能正常工作,但我遇到了一个单独的问题。

在 Spotify 应用中,当遇到 本地文件 (player.track.local = true) 时,player.track.image 返回一个空字符串。播放 Spotify 托管的曲目时,player.track.image 始终以“spotify:image:...”的形式返回一个 URI。我知道 Spotify 桌面应用程序可以看到专辑封面,因为它显示在左下角的播放器中。我只是无法访问它以在我的应用中使用。

有什么方法可以检索此艺术作品(或者找不到本地文件的路径,以便我自己从 Python 服务器获取它?)谢谢。

-杰里米

【问题讨论】:

    标签: api spotify


    【解决方案1】:

    我认为是这样的。

    由于我在使用新 API 时遇到了其他问题(例如不再允许访问正在播放的信息),因此我决定坚持使用旧 API,并且能够从那里开始工作。我利用播放列表从其内容生成封面图像这一事实,所以我只是做了以下事情:

    (我更新了这个以反映我今天花了一些时间了解更多有关数组后所做的一些简化)

    function getLocalArt() {
        sp.core.library.createPlaylist("tempPL");
        var mosaicURI;
        var trackURI = player.track.uri;
        sp.core.library.getPlaylistsUri().forEach(function (p) {
            if (p.name == "tempPL") {
                p.add(trackURI);
                mosaicURI = p.cover;
                sp.core.library.removePlaylist(p.uri);
            }
        });
        return mosaicURI;  
    }
    

    这很适合我的目的,并返回一个如下所示的字符串:

    spotify:mosaic:localfileimage%3AZ%253A%255CiTunes%255CiTunes%2520Media%255CMusic%255CBroken%2520Social%2520Scene%255CEarCande.com%255CAll%2520To%2520All%2520(Skeet%2520Skeet%2520Remix).mp3

    这有一个附带的好处,就是为我提供了文件系统中曲目的完整路径,我可以将其传递到我的服务器,这样我就可以使用它来提取专辑封面,以便在我的网络遥控器中显示。我知道sp.core 的使用对于向公众分发的应用程序是禁止的,但它适用于我的小项目。谢谢。

    【讨论】:

    • “这有一个附带好处,就是为我提供了文件系统中曲目的完整路径”:哎呀,感谢您的报告。我会将其传递给安全团队,以便解决此问题。
    【解决方案2】:

    简而言之:不 - 本地文件的专辑封面不存储在后端,客户端不公开本地数据。

    【讨论】:

      猜你喜欢
      • 2021-06-21
      • 1970-01-01
      • 2023-01-02
      • 1970-01-01
      • 2021-04-28
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      相关资源
      最近更新 更多