43 个版本 (18 个重大更新)
0.19.1 | 2024 年 7 月 8 日 |
---|---|
0.18.2 | 2024 年 5 月 25 日 |
0.17.2 | 2024 年 3 月 29 日 |
0.16.2 | 2023 年 12 月 11 日 |
0.5.1 | 2021 年 11 月 5 日 |
#14 在 音频
每月 369 次下载
440KB
10K SLoC
spotify_player
目录
简介
spotify_player
是一个快速、易于使用且可配置的终端音乐播放器。
特性
- 具有直观分页和弹出系统的简约用户界面。
- 高度 可配置
- 与官方 Spotify 应用程序具有功能一致性。
- 支持使用 Spotify Connect 进行远程控制。
- 支持从终端直接 流媒体播放歌曲。
- 支持大多数歌曲的 歌词。
- 支持 跨平台媒体控制。
- 支持 图像渲染。
- 支持 桌面通知。
- 支持以 守护进程 运行应用程序
- 提供广泛的 命令行命令
示例
在youtube或asciicast上查看spotify_player
的演示,版本为v0.5.0-pre-release
。
请查看examples/README.md获取更多示例。
安装
默认情况下,应用程序的安装二进制文件为spotify_player
。
要求
需要一个Spotify Premium账户。
依赖项
Windows和MacOS
- 作为构建依赖项,需要Rust和cargo。
Linux
-
作为构建依赖项,需要Rust和cargo。
-
安装
openssl
、alsa-lib
(streaming
功能)、libdbus
(media-control
功能)。-
例如,在基于Debian的系统上,运行以下命令安装应用程序的依赖项
sudo apt install libssl-dev libasound2-dev libdbus-1-dev
-
二进制文件
应用程序的预构建二进制文件可以在发布页面找到。
注意:要运行应用程序,Linux系统需要安装依赖项部分中指定的额外依赖项。
Homebrew
运行brew install spotify_player
安装应用程序。
Scoop
运行scoop install spotify-player
安装应用程序。
Cargo
运行cargo install spotify_player
从crates.io安装应用程序。
AUR
运行yay -S spotify-player
将应用程序作为AUR包安装。
或者,运行yay -S spotify-player-full-pipe
安装一个具有完整功能支持和Pulseaudio/Pipewire而不是rodio的AUR包。
Void Linux
运行xbps-install -S spotify-player
安装应用程序。
FreeBSD
运行pkg install spotify-player
从FreeBSD端口安装spotify_player
二进制文件。
NetBSD
使用包管理器,运行pkgin install spotify-player
从官方仓库安装。
从源码构建,
cd /usr/pkgsrc/audio/spotify-player
make install
Docker
注意:在使用docker镜像时,streaming功能被禁用。
您可以通过运行以下命令从master
分支下载最新构建的二进制镜像
docker pull aome510/spotify_player:latest
然后运行
docker run --rm -it aome510/spotify_player:latest
以运行应用程序。
您还可以使用本地配置文件夹来配置应用程序,或在运行docker镜像时使用本地缓存文件夹来存储应用程序的缓存数据。
docker run --rm \
-v $APP_CONFIG_FOLDER:/app/config/ \
-v $APP_CACHE_FOLDER:/app/cache/ \
-it aome510/spotify_player:latest
特性
Spotify Connect
要启用完整的Spotify connect支持,用户需要注册Spotify应用程序,并在配置文档中描述的一般配置文件中指定应用程序的client_id
。
有关注册Spotify应用程序的更多详细信息,请参阅官方Spotify文档。
当使用自己的client_id
运行spotify_player
时,按D(默认快捷键为SwitchDevice
命令)获取可用设备列表,然后按Enter(默认快捷键为ChooseSelected
命令)连接到所选设备。
流媒体
spotify_player
支持流媒体,需要构建/安装具有streaming
功能(默认启用)和音频后端(默认为rodio-backend
)。流媒体功能允许spotify_player
直接从终端播放音乐。
应用程序在运行时使用librespot库创建集成Spotify客户端。集成客户端将在spotify-player
名称下注册Spotify扬声器设备,该设备可在Spotify connect设备列表中访问。
音频后端
spotify_player
使用rodio作为默认的音频后端。可用音频后端列表
alsa-backend
pulseaudio-backend
rodio-backend
portaudio-backend
jackaudio-backend
rodiojack-backend
sdl-backend
gstreamer-backend
用户可以在构建/安装应用程序时通过指定--features
选项来更改音频后端。例如,要使用pulseaudio-backend
安装spotify_player
,请运行
cargo install spotify_player --no-default-features --features pulseaudio-backend
注意:
- 需要在此处指定
--no-default-features
,因为rodio-backend
是默认功能之一。 - 用户将需要根据所选音频后端安装额外的依赖项。更多详细信息请参阅Librespot文档。
在安装时,也可以通过运行来禁用streaming
功能
cargo install spotify_player --no-default-features
歌词
要启用歌词支持,spotify_player
需要构建/安装具有lyric-finder
功能(默认禁用)。要安装包含lyric-finder
功能的程序,请运行
cargo install spotify_player --features lyric-finder
用户可以通过调用LyricPage
命令进入歌词页面来查看当前播放歌曲的歌词。为此,spotify_player
需要构建带有lyric-finder
功能的版本。
在底层,spotify_player
使用Genius.com检索歌曲的歌词。
媒体控制
要启用媒体控制支持,spotify_player
需要构建/安装具有media-control
功能(默认启用)并将enable_media_control
配置选项设置为true
在常规配置文件中。
媒体控制支持在Linux上使用MPRIS DBus实现,在Windows和MacOS上使用OS窗口事件监听器。
图像
要启用图像渲染支持,spotify_player
需要构建/安装具有image
功能(默认禁用)。要安装包含image
功能的程序,请运行
cargo install spotify_player --features image
spotify_player
支持在运行在Kitty或iTerm2上的程序时以全分辨率渲染图像。否则,图像将以块字符的形式显示。
spotify_player
还支持在sixel
功能标志下渲染图像,这同样启用了image
功能
cargo install spotify_player --features sixel
注意事项:
- 并非所有由libsixel支持的终端都被
spotify_player
支持,因为它依赖于一个第三方库进行图像渲染。可能支持的终端列表可以在这里找到。 sixel
渲染的图像可能具有奇怪的缩放比例。建议调整cover_img_scale
配置选项以获得最佳结果,因为缩放方式因不同的终端和字体而异。
图像渲染示例
- iTerm2
- Kitty
- Sixel (
foot
终端,cover_img_scale=1.8
)
- 其他
通知
要启用桌面通知支持,需要将spotify_player
构建/安装为带有notify
功能(默认禁用)。要安装包含notify
功能的程序,请运行
cargo install spotify_player --features notify
注意:与Linux
相比,MacOS
和Windows
的通知支持相当有限。
鼠标支持
目前,鼠标的唯一支持用例是通过在播放进度条中左键单击到该位置来定位当前播放的位置。
守护进程
要启用守护进程支持,需要将spotify_player
构建/安装为带有daemon
功能(默认禁用)。要安装包含daemon
功能的程序,请运行
cargo install spotify_player --features daemon
您可以通过指定-d
或--daemon
选项来作为守护进程运行应用程序:spotify_player -d
。
注意事项:
-
daemon
功能不支持Windows -
daemon
功能需要启用streaming
功能,并以带有音频后端构建的应用程序运行 -
由于操作系统的限制,
daemon
功能与MacOS上的media-control
功能不兼容,该功能默认启用。换句话说,如果您想在MacOS上使用daemon
功能,您必须禁用media-control
功能安装应用程序cargo install spotify_player --no-default-features --features daemon,rodio-backend
模糊搜索
要启用模糊搜索支持,需要将spotify_player
构建/安装为带有fzf
功能(默认禁用)。
CLI命令
spotify_player
提供了一些CLI命令来与Spotify交互
get
:获取Spotify数据(播放列表/专辑/艺术家数据,用户数据等)playback
:与播放交互(开始播放,播放暂停,下一曲等)connect
:连接到Spotify设备like
:喜欢当前播放的曲目authenticate
:验证应用程序playlist
:播放列表编辑(新建,删除,导入,分支等)
有关更多详细信息,请运行spotify_player -h
或spotify_player {command} -h
,其中{command}
是CLI命令。
注意事项
- 第一次使用命令行界面时,您需要先运行
spotify_player authenticate
命令来验证应用程序。 - 在内部,命令行命令通过向运行在端口号
client_port
的spotify_player
客户端套接字发送请求来处理,这是一个通用的应用程序配置,默认值为8080
。如果没有运行应用程序的实例,在处理命令行命令时将创建一个新的客户端,这会增加命令的延迟。
命令
要转到快捷键帮助页面,请按 ?
或 C-h
(默认快捷键为 OpenCommandHelp
命令)。
提示:
- 您可以使用
Search
命令在快捷键帮助页面(以及一些其他页面)中搜索 RefreshPlayback
可用于手动更新播放状态。RestartIntegratedClient
当用户想要切换到另一个音频设备(耳机、耳塞等)而不重新启动应用程序时非常有用,因为集成客户端将使用新设备重新初始化。
支持命令列表
命令 | 描述 | 默认快捷键 |
---|---|---|
NextTrack |
下一首歌曲 | n |
PreviousTrack |
上一首歌曲 | p |
ResumePause |
根据当前播放状态暂停或继续 | space |
PlayRandom |
在当前上下文中播放随机歌曲 | . |
Repeat |
循环重复模式 | C-r |
ToggleFakeTrackRepeatMode |
切换假轨道重复模式 | M-r |
Shuffle |
切换随机播放模式 | C-s |
VolumeUp |
增加播放音量5% | + |
VolumeDown |
减少播放音量5% | - |
Mute |
在0%和上一个级别之间切换播放音量 | _ |
SeekForward |
向前搜索5秒 | > |
SeekBackward |
向后搜索5秒 | < |
Quit |
退出应用程序 | C-c ,q |
ClosePopup |
关闭弹出窗口 | esc |
SelectNextOrScrollDown |
选择列表/表格中的下一项或向下滚动 | j ,C-n ,down |
SelectPreviousOrScrollUp |
选择列表/表格中的上一项或向上滚动 | k ,C-p ,up |
PageSelectNextOrScrollDown |
选择列表/表格中的下一页项或向下滚动一页 | page_down ,C-f |
PageSelectPreviousOrScrollUp |
选择列表/表格中的上一页项或向上滚动一页 | page_up ,C-b |
SelectFirstOrScrollToTop |
选择列表/表格中的第一项或滚动到顶部 | g g ,home |
SelectLastOrScrollToBottom |
选择列表/表格中的最后一项或滚动到底部 | G ,end |
ChooseSelected |
选择选定的项目 | enter |
RefreshPlayback |
手动刷新当前播放 | r |
RestartIntegratedClient |
重新启动集成客户端(仅限 streaming 功能) |
R |
ShowActionsOnSelectedItem |
打开一个弹出窗口,显示对选定项的操作 | g a ,C-space |
ShowActionsOnCurrentTrack |
打开一个弹出窗口,显示对当前歌曲的操作 | a |
AddSelectedItemToQueue |
将选定的项目添加到队列 | Z ,C-z |
FocusNextWindow |
聚焦下一个可聚焦的窗口(如果有) | tab |
FocusPreviousWindow |
聚焦上一个可聚焦的窗口(如果有) | backtab |
SwitchTheme |
打开切换主题的弹出窗口 | T |
SwitchDevice |
打开切换设备的弹出窗口 | D |
Search |
打开当前页面搜索的弹出窗口 | / |
BrowseUserPlaylists |
打开浏览用户播放列表的弹出窗口 | u p |
BrowseUserFollowedArtists |
打开浏览用户关注的艺术家的弹出窗口 | u a |
BrowseUserSavedAlbums |
打开浏览用户保存的专辑的弹出窗口 | u A |
CurrentlyPlayingContextPage |
转到当前播放的上下文页面 | g space |
TopTrackPage |
转到用户最高排名曲目页面 | g t |
RecentlyPlayedTrackPage |
转到用户最近播放曲目页面 | g r |
LikedTrackPage |
转到用户喜欢曲目页面 | g y |
LyricPage |
转到当前曲目歌词页面(仅限“歌词查找”功能) | g L , l |
LibraryPage |
转到用户图书馆页面 | g l |
SearchPage |
转到搜索页面 | g s |
BrowsePage |
转到浏览页面 | g b |
Queue |
转到队列页面 | z |
OpenCommandHelp |
转到命令帮助页面 | ? , C-h |
PreviousPage |
转到上一页 | backspace , C-q |
OpenSpotifyLinkFromClipboard |
从剪贴板打开Spotify链接 | O |
SortTrackByTitle |
按曲目名称对曲目表(如果有)进行排序 | s t |
SortTrackByArtists |
按曲目艺术家对曲目表(如果有)进行排序 | s a |
SortTrackByAlbum |
按专辑对曲目表(如果有)进行排序 | s A |
SortTrackByAddedDate |
按添加日期对曲目表(如果有)进行排序 | s D |
SortTrackByDuration |
按持续时间对曲目表(如果有)进行排序 | s d |
ReverseOrder |
反转曲目表(如果有)的顺序 | s r |
MovePlaylistItemUp |
将播放列表项目向上移动一个位置 | C-k |
MovePlaylistItemDown |
将播放列表项目向下移动一个位置 | C-j |
CreatePlaylist |
创建一个新的播放列表 | N |
要添加新快捷键或修改默认快捷键,请参阅配置文档中的键映射部分。
Actions
有一个一般性的动作列表可用;然而,并不是所有的Spotify项(曲目、专辑、艺术家或播放列表)都实现了每个动作。要获取一个项上可用的动作列表,请调用ShowActionsOnCurrentTrack
命令或ShowActionsOnSelectedItem
命令,然后按回车(默认绑定为ChooseSelected
命令)来启动所选动作。某些动作可能不会出现在弹出窗口中,但可以绑定到快捷键。
可用的动作列表
GoToArtist
GoToAlbum
GoToRadio
AddToLibrary
AddToPlaylist
AddToQueue
AddToLiked
DeleteFromLiked
DeleteFromLibrary
DeleteFromPlaylist
ShowActionsOnAlbum
ShowActionsOnArtist
ToggleLiked
CopyLink
Follow
Unfollow
这些操作也可以绑定到快捷键。要添加新的快捷键,请参考配置文档中的操作部分。
搜索页面
首次进入搜索页面时,应用程序会聚焦到搜索输入框。用户可以输入文本,使用backspace
键删除一个字符,或使用enter
键进行搜索。
要将焦点从搜索输入框移动到其他窗口(如曲目结果、专辑结果等),请使用FocusNextWindow
或FocusPreviousWindow
。
配置
默认情况下,spotify_player
会查找位于$HOME/.config/spotify-player
的应用程序配置文件。这可以通过指定-c <FOLDER_PATH>
或--config-folder <FOLDER_PATH>
选项来更改。
如果找不到应用程序配置文件,将创建一个包含默认值的配置文件。
有关配置选项的更多详细信息,请参阅配置文档。
缓存
默认情况下,spotify_player
会查找位于$HOME/.cache/spotify-player
的应用程序缓存文件,包括日志文件、Spotify的授权凭证、音频缓存文件等。这可以通过指定-C <FOLDER_PATH>
或--cache-folder <FOLDER_PATH>
选项来更改。
日志
应用程序将日志存储在$APP_CACHE_FOLDER/spotify-player-*.log
文件中。对于调试或提交问题,用户还可以参考$APP_CACHE_FOLDER/spotify-player-*.backtrace
中的回溯文件,其中包含应用程序在异常/意外错误时的回溯信息。
spotify_player
使用环境变量RUST_LOG
来定义应用程序的日志级别。默认情况下,RUST_LOG
设置为spotify_player=INFO
,这只会显示应用程序的日志。
致谢
spotify_player
是用Rust编写的,并基于tui-rs、rspotify、librespot等出色的库构建的。它深受spotify-tui和ncspot的启发。
依赖项
~31–92MB
~1.5M SLoC