我正在使用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 Desktop应用程序可以看到专辑封面,因为它显示在左下方的播放器中。我无法访问它以便在我的应用中使用。
有没有办法检索这个艺术(或者没有找到本地文件的路径,所以我可以自己从Python服务器上获取它?)谢谢。
-Jeremy
答案 0 :(得分:0)
简而言之:不 - 本地文件的专辑封面不存储在后端,客户端不会公开本地数据。
答案 1 :(得分:0)
我认为就是这样。
由于我遇到了新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
对于分发给公众的应用程序是禁止的,但它适用于我的小项目。感谢。