4 个版本

0.1.3 2019年10月26日
0.1.2 2019年10月20日
0.1.1 2019年10月20日
0.1.0 2019年10月19日

#813音频

MIT 许可证

35KB
735

Unix版Spotify

这到底是什么意思?这意味着这是我喜欢在Unix系统上搜索和收听音乐的方式。这是一个Spotify控制器,但(至少现在)不包括流式传输实际音乐的方式。但是已经有一个非常好的这样的播放器(我使用Spotnix):https://github.com/spotifyd/spotifyd

真的非常早期,所以可能会有一些粗糙的边缘,缺少的功能和简陋...然而,我每天都在使用它。

首先,这里是一个会话可能的样子(Spotnix在左边,右边我们搜索并选择要播放的内容)

spotnix

那么这个有什么特别之处呢?嗯,你得到三个命名管道,仅此而已。有什么不喜欢的呢 :-)? 这些管道的标准名称

./input(例如,播放某些内容,暂停,列出设备,搜索等。)

./output(搜索结果,列出设备的输出等。)

./event(目前只是播放状态,如进度、曲目名称等)。这是json格式。

echo search_playlist electronic > ./input

要获取结果并选择要播放的内容(当然你也可以使用https://github.com/junegunn/fzf,我喜欢https://github.com/lotabout/skim - 可能只是因为我非常喜欢Rust编程语言)

cat ./output | sk | awk '{print $NF}' | xargs -r -I{} echo play {} > ./input

或者全部在一个命令中

echo search_playlist electronic > ./input; cat ./output | sk | awk '{print $NF}' | xargs -r -I{} echo play {} > ./input

要获取播放状态(例如,进度,歌曲/专辑名称等)

cat ./event

(上面的更新每秒一次。只需再次运行cat或循环读取该管道,或你喜欢的方式更新即可。)

显然,你可能会把所有这些事情都放在脚本中 - 但如何使用它取决于你,这些都是构建块 - Unix的方式。有关一些基本示例脚本,请参阅:示例

目前可用的命令是(你发送到./input管道中的命令)

play <optional spotify uri> (without uri - resume playback)
pause
shuffle true/false
search_track <search string>
search_album <search string>
search_artist <search string>
search_playlist <search string>
devices (list devices available)
device <device id> (selects the device use for playback)
next
prev

搜索结果以页的形式返回,Spotify强制最大为50项。由于这个工具旨在在命令行中使用,实际选择要播放的内容很可能会从结果的新行分隔列表中发生(使用上述提到的fzfskim等工具),因此有一个命令行选项用于设置要获取的页数(默认为4)。这些页面使用神奇的rayon crate并发获取。

安装

目前还没有现成的软件包,因此您需要自行编译。首先,安装Rust然后

cargo install spotnix

我个人使用Nix来管理依赖,包括Rust工具链,但我也知道Rustup非常好用。编译时您需要安装openssl

要更新spotnix,您可以运行

cargo install spotnix --force

要使用此程序,您必须连接到Spotify的Web API

spotnix通过Spotify的Web API进行操作(例如搜索、播放、暂停等)。

当您第一次启动spotnix时,您将被要求登录到spotify,但——为了真正使其工作,您需要做一点更多的工作

  1. 打开Spotify应用程序仪表板
  2. 点击创建客户端ID并创建一个应用
  3. 点击编辑设置
  4. https://127.0.0.1:8182/spotnix添加到重定向URI
  5. 现在您可以使用Spotify进行认证了!
  6. 所以回到终端,运行CLIENT_ID=abcde12345 CLIENT_SECRET=sasjfijs2983 REDIRECT_URI=http://localhost:8182/spotnix
  7. 现在您会被重定向到Spotify,它将要求您授权。
  8. 接受后,您将被重定向到localhost,它很可能拒绝连接(除非您真的在端口8182上运行了一个Web服务器)。无论如何,复制URL并将其粘贴到请求它的终端中(您可能需要在终端请求它之前关闭浏览器窗口)。

用法

这是spotnix当前的帮助输出

spotnix 0.1.2
spotify as a series of "tubes"... or rather named pipes.

USAGE:
    spotnix [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -d, --device <device>    Default device to use by name
    -e, --event <event>      All events go here (a named pipe) [default: ./event]
    -i, --input <input>      All input goes here (a named pipe) [default: ./input]
    -o, --output <output>    All output goes here (a named pipe) [default: ./output]
    -r, --pages <pages>      Max number of search result pages to fetch (a page contains 50 items) [default: 4]

这就是Unix版的Spotify——您可以使用所有您熟悉和喜爱的命令行工具来查找和收听音乐!

依赖项

~29–41MB
~685K SLoC