是否可以通过带有自定义控件的浏览器来控制 spotify 桌面客户端?
Posted
技术标签:
【中文标题】是否可以通过带有自定义控件的浏览器来控制 spotify 桌面客户端?【英文标题】:Is it possible to control the spotify desktop client from a browser with custom controls? 【发布时间】:2014-10-29 05:12:24 【问题描述】:我是 playmoss 的开发者,用户可以使用不同的音乐服务创建播放列表。
我们计划以类似于 bop.fm 的方式将 Spotify 支持添加到我们的播放列表中。
上下文
以这个播放列表为例(其中所有歌曲都可以在 Spotify 上找到,至少在西班牙)…… https://bop.fm/p/o12l
...如果我们的计算机中安装了 spotify 客户端(使用 Mac 测试) 一旦播放列表开始播放,我们可以点击右上角的Spotify图标[图片],我们将通过Spotify播放歌曲。
使用 bop.fm 控制界面,我们可以暂停、播放、跳过下一个,甚至可以通过进度条跳到曲目中的某个点。 这与官方的 spotify 播放按钮相似但更强大,请参见此处的示例: http://jsfiddle.net/insonorizate/a5jf39yn/
播放按钮有上一个、播放、暂停、下一个功能,但没有搜索。
当然,它不能以任何方式自定义,也不能从 javascript 调用。 (在 bop.fm 中可以打开调试器控制台并调用
Bop.Player.pause()
或
Bop.Player.play()
通过 spotify 暂停或播放在 bop.fm 中播放的曲目)
稍微摆弄一下 bop.fm 页面,有一些有趣的事情。主页中有一个 iframe 指向:
https://embed.spotify.com/remote-control-bridge/
查看这个 iframe 源代码,我们发现如下内容:
// Expose the OAuth Token to the Javascript
var tokenData = 'NAowChgKB1Nwb3RpZnkSABoGmAEByAEBJReQCFQSFG2Ynvz1oBKgxv2mE1XXz_1Au-cg';
// Pass the remote control to the bridge
var remoteControlBridge = new Spotify.RemoteControlBridge();
remoteControlBridge.init(tokenData);
没有关于 Spotify.RemoteControlBridge 的文档(谷歌上“Spotify.RemoteControlBridge”的 0 个结果),并且不同 api 的文档中没有任何内容,甚至接近以类似于此的方式控制 spotify 播放器。
问题
如何从浏览器控制 Spotify 桌面应用?
bop.fm 是否与 spotify 有任何特殊安排,并且他们正在使用一些“秘密 api”?
他们是否在利用一些我找不到的功能?
可以复制吗?
是否符合 Spotify 条款?
谢谢!
【问题讨论】:
给你:developer.spotify.com/web-api 您好,感谢您的回答,但如果我没记错的话,您链接的 api 不提供控制 spotify 播放器的能力。 api 只是访问 api 目录的端点。有播放歌曲的示例,但它们只是播放预览样本,而不是使用 Spotify 播放完整曲目。如果您查看我提供的 bop.fm 链接,您将了解我在搜索什么。还是谢谢! 【参考方案1】:您无法控制 Spotify 客户端或收听 Spotify Web Helper 发出的事件。想象一下每个人都可以:每个网站都可能在未经您许可的情况下播放歌曲,甚至可以立即知道您在听什么。为了防止这种情况,Spotify 只允许经过批准的合作伙伴使用此功能。
如您所见,远程控制桥提供了此功能。它可以与系统上运行的 Spotify Web Helper 进行通信,该 Web Helper 由 OAuth 和 CSRF 令牌保护。在远程控制桥中,您甚至可以看到允许的合作伙伴:
Spotify(谁知道) 雅虎 last.fm coachella.com bop.fm sandpit.us 诚实的 音乐匹配您可以contact them 寻求合作。我敢肯定他们不会咬人的。
【讨论】:
【参考方案2】:这实际上在 Spotify 网站的开发人员部分有一些记录。 我认为 bop.fm 确实使用了他们的自定义 Spotify Play Button 小部件。这利用了你提到的 iframe。
Here您可以找到有关 Spotify 的此功能的文档。然后,您可以使用 Javascript 等将其修改为您自己的需要。
【讨论】:
其实,目前播放按钮没有任何Javascript API,只是一个iFrame,但没有回调等。 感谢您的回答@Ihsan,但它仍然不符合我们的需要。播放按钮小部件没有我们需要在播放器中使用的任何暂停或回调(例如)。以上是关于是否可以通过带有自定义控件的浏览器来控制 spotify 桌面客户端?的主要内容,如果未能解决你的问题,请参考以下文章
AVPlayerViewController 播放速度的自定义控制