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 在 音频
35KB
735 行
Unix版Spotify
这到底是什么意思?这意味着这是我喜欢在Unix系统上搜索和收听音乐的方式。这是一个Spotify控制器,但(至少现在)不包括流式传输实际音乐的方式。但是已经有一个非常好的这样的播放器(我使用Spotnix):https://github.com/spotifyd/spotifyd。
真的非常早期,所以可能会有一些粗糙的边缘,缺少的功能和简陋...然而,我每天都在使用它。
首先,这里是一个会话可能的样子(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项。由于这个工具旨在在命令行中使用,实际选择要播放的内容很可能会从结果的新行分隔列表中发生(使用上述提到的fzf
或skim
等工具),因此有一个命令行选项用于设置要获取的页数(默认为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,但——为了真正使其工作,您需要做一点更多的工作
- 打开Spotify应用程序仪表板
- 点击
创建客户端ID
并创建一个应用 - 点击
编辑设置
- 将
https://127.0.0.1:8182/spotnix
添加到重定向URI - 现在您可以使用Spotify进行认证了!
- 所以回到终端,运行
CLIENT_ID=abcde12345 CLIENT_SECRET=sasjfijs2983 REDIRECT_URI=http://localhost:8182/spotnix
- 现在您会被重定向到Spotify,它将要求您授权。
- 接受后,您将被重定向到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