是否可以通过带有自定义控件的浏览器来控制 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 桌面客户端?的主要内容,如果未能解决你的问题,请参考以下文章

Echo Spot使用内置摄像头录制视频 - 自定义技能

带有自定义 html5 控件的 Airplay

AVPlayerViewController 播放速度的自定义控制

C#.NET自定义控件怎么动态加载普通控件?

C# 在 DataGridView 上显示我的自定义控件,即使不编辑

带有自定义控件的 MPMoviePlayerController