如何从 Spotify API 访问本地音乐中的曲目/专辑封面



我正在使用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 时遇到了其他问题(例如不再允许访问现在播放的信息),我决定坚持使用旧 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

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

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

最新更新