用Slack和树莓派来控制Spotify

移动到新建的楼在后Staplegun(我工作的地方),开发商(我们所有4)选择切换到一个开放的平面布置图。包括在这个举动是我们现在拥有扬声器共享音频系统周围的一切,并与我们非常接近的工作彼此一个大的更新,对于我们每个人能够轻松地控制它变得非常重要音乐选择。音响系统没有“智能”属性或网络连接,所以在最基本的层面上,我们可能只是迷上了我们的手机音频线连接到辅助输入并播放音乐的方式-但我们的音响系统枢纽是我们服务器机房,这是远不及我们工作的地方,这样很快就扔掉一个合理的选择。除了 ​​挂钩蓝牙连接或电缆进入扬声器一些其他第三方连接部件,我们几乎是出于运气。或者我们是这么认为。

我们意识到,我们有一个备用的树莓派躺在附近,它有一个音频输出,以及以太网有线输入。从理论上讲,我们可以以某种方式连接到PI在从郫县我们的网络和流媒体音乐。现在,“如何”是大问题。最重要的是,大家都用Slack大量的工作,所以我们可以把它一步,通过松弛控制我们的音乐选择?听起来很牵强,我知道-不过这正是我们所做的,我想告诉你,你如何能做到这一点。

先决条件

当你沿着之后,有你,以建立在这个岗位需要的一切的几件事情:

  • 你需要一个 溢价 Spotify的帐户(这需要获得API访问)。
  • 你需要一个树莓派(最好是PI 2,但任何丕应该工作)。
  • 你需要一个扬声器连接到你的皮。
  • 你需要丕互联网接入,无线或通过以太网电缆。
  • 你需要的Node.js v0.10.x和libspotify安装在皮。
    这最后一个是非常重要的 – 我们将使用不符合更高版本的节点(希望这获取未来更新)的工作库。可以了,好了?好,让我们开始吧。

让一切设置

为了让我们的松弛渠道提出请求我们的皮,然后为我们的圆周率提出要求Spotify的,我们需要使用一个名为包crispyfi。找到所需的文件夹上你的皮,并克隆crispyfi回购:

git clone https://github.com/crispymtn/crispyfi.git

cd crispyfi
你得到这个克隆完成后,有相当多的过程中,你将不得不通过获得“怠于丕Spotify的”通信链路去; 这是非常有据可查的crispyfi自述,所以我会指引你那里得到的东西成立,但简而言之,这就是你需要做的:

  • 注册一个Spotify应用,并获得了Spotify的密钥文件(你需要一个高级会员做到这一点)。
  • 与crispyfi的在哪里在你的Spotify用户名,密码和密钥文件添加文件继续。
  • 创建松弛自定义传出网络挂接整合和设置触发词来 播放,暂停,停止,跳过,清单,卷,状态,洗牌,帮助,重新连接静音,取消静音。
  • 您可以命名您的网络挂接(我们呼吁我们的点唱机),给它一个表情符号图标,并选择是否网络挂接应该在所有频道在全球倾听。在Staplegun,我们只有这个网络挂接听上的专用于控制音乐的一个通道。
  • 不要担心网络挂接的URL字段现在 – 我们将稍后进行编辑(你仍然可能需要使用一些虚拟数据虽然填补它) – 并确保斯莱克给你复制令牌。
  • 添加松弛令牌crispyfi的config.json文件。

这里的想法是,只要你聊天触发字中的一个通道,即将离任的网络挂接会火,并作出POST请求您指定的URL(这是我们还没有设置),包括触发它的具体消息。这POST请求会打到我们要运行,这将处理所有通信Spotify和回crispyfi服务器。将Pi将从Spotify的流式传输音乐,并将其发送到音频输出端口,你会钩到扬声器。
一旦我们添加了所有我们的配置数据到我们的crispyfi项目中,我们可以安装的依赖关系和旋转起来在服务器上的8000端口:

npm install

node index # Defaults to running on port 8000
如果你拥有了一切设置正确,那么你应该看到的输出指出crispyfi成功登录Spotify的与您的凭据。现在,这里的一个问题:我们有服务器在运行,但我们的松弛网络挂接不能达到它,因为我们的皮没有一个静态IP。为了解决这个问题,我们可以用一个精彩的 ​​库调用ngrok将通过提供ngrok URL暴露在我们的本地主机与外部世界的任何端口。通过NPM安装ngrok,然后运行它的8000端口:

npm install -g ngrok
ngrok 8000
这将接管你的终端面板,为您提供一个网址,如 http://10c06440.ngrok.com。这是我们希望斯莱克网络挂接有URL -其次/手柄路线。所以回去懈怠,编辑您的网络挂接,并更改网址为:

http://10c06440.ngrok.com/handle
您将有一个不同的URL ngrok,所以你需要用你提供的一个交换上述网址。如果你已经正确地做了一切,那么你应该松弛现在已经完全可以通过您的Spotify的帐户,控制你的音乐选择!

服用了一步

Crispyfi是一个伟大的服务-但它目前只用Spotify的URI的工作。这意味着基于标题,艺术家,专辑名称,搜索则不能播放音乐等等-你有确切的URI从Spotify的复制起到一定的歌曲或播放列表。我们希望在Staplegun添加此“点歌”功能,我们能够通过一个非常容易得到它hubot调用的脚本 hubot,Spotify的,我的。

如果你在工作中使用斯莱克 – 或任何其他即时消息应用程序 – 你不使用hubot,那么我强烈建议你看看。它不仅是一个有趣的机器人,可以使你的团队互动更加生动,但你可以用一些甜的脚本,真正提高生产力计划; 这本身就是值得自己的博客文章的话题,所以我就坚持到讨论hubot,Spotify的,我的剧本现在。

如果你安装了这个脚本,那么您可以在以下格式松弛触发它:

hubot spotify me test

> https://open.spotify.com/track/0yA1MBQ60SoiYt7xqdS3H1
它会回报给你一个Spotify的URL。如果我们转换为Spotify的URI(这是简单的事)这一点,那么我们就错过是触发字 发挥,以自动发出网络挂接请求,我们crispyfi服务器播放此歌曲。嗯-有编辑hubot脚本重新格式化Spotify的网址,并用这个词的前缀它没有简单的方法 打,所以我们必须真正在这里编辑一些代码。这里是确切的文件路径和变化,你需要做:

您在进行这些更改并将其部署到hubot – 你是好去!您的新和改善Spotify的hubot命令如下:

hubot spotify me test
> play spotify:track:0yA1MBQ60SoiYt7xqdS3H1
这将触发您o​​utging网络挂接执行请求的crispyfi服务器!繁荣!

最后的思考

这种设置是非常强大的,你把它全部到位后,你绝对值得几杯啤酒。还有很多工作DEVOPS这里发生了,这是艰难的东西。虽然这是一个真正真棒的服务为已去为我们个人的团队中,有几件事情,我不喜欢。

Crispyfi使用libspotify,这是目前使CLI请求Spotify的API的唯一途径。Spotify的已公开表示,libspotify不积极维护了 – 但他们并没有公布一个备用库,以取代其位置呢。他们是如何停止支持一些不提供更换的是超越我 – 但是这是怎么回事,现在。
Crispyfi本身不是超级既保持与大部分期间的2014年还是结束了几个月的时间已经发生了提交的,这是我们能找到实现我们所需要的唯一有效的图书馆,它肯定击败支出几个工时建立同样的事情我们自己!
即使有这些顾虑,这种设置是一个改变游戏规则。要完全控制我们所有的音乐(播放,暂停,控制音量,管理播放列表等),我们现在只是问题松弛通道的命令,并立即发生。还有的作品更好地为我们没有单一的方式,我敢打赌,你会发现同样的事情太多了你的团队。加 – 这样就能里克滚动我们的团队,如果我们中的一个在家工作!

 

编译自:https://thesocietea.org/2016/03/controlling-spotify-with-slack-and-a-raspberry-pi/

标签