#lyrics #track #song

lyric_finder

歌词查找库

7个版本

0.1.6 2024年3月29日
0.1.5 2024年2月4日
0.1.4 2023年8月6日
0.1.3 2023年2月18日
0.1.2 2022年5月14日

#37音频

Download history 117/week @ 2024-04-15 136/week @ 2024-04-22 21/week @ 2024-04-29 8/week @ 2024-05-06 21/week @ 2024-05-13 23/week @ 2024-05-20 23/week @ 2024-05-27 27/week @ 2024-06-03 23/week @ 2024-06-10 18/week @ 2024-06-17 23/week @ 2024-06-24 165/week @ 2024-07-01 58/week @ 2024-07-08 44/week @ 2024-07-15 12/week @ 2024-07-22 92/week @ 2024-07-29

218 每月下载量
用于 spotify_player

MIT 许可证

15KB
200

spotify_player

目录

简介

spotify_player 是一个快速、易于使用且可配置的终端音乐播放器。

特性

示例

youtubeasciicast 上查看 spotify_player v0.5.0-pre-release 的演示。

查看 examples/README.md 以获取更多示例。

安装

默认情况下,应用程序安装的二进制文件是 spotify_player

要求

需要 Spotify Premium 账户。

依赖关系

Windows 和 MacOS
Linux
  • 作为构建依赖项安装 Rust 和 cargo
  • 安装 opensslalsa-libstreaming 功能)、libdbusmedia-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_playercrates.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镜像时,功能被禁用。

您可以通过运行以下命令下载最新构建的二进制镜像:

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文档

spotify_player使用您的自己的client_id运行时,按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 支持在 KittyiTerm2 上运行时以全分辨率渲染图像。否则,图像将以 块字符 显示。

spotify_player 还支持在 sixel 功能标志下渲染图像,这也会启用 image 功能

cargo install spotify_player --features sixel

注意事项:

  • 由于 spotify_player 依赖于一个用于图像渲染的第三方库,因此并非所有由 libsixel 支持的终端都由 spotify_player 支持。可能支持的终端列表可以在 此处 找到。
  • sixel 渲染的图像可能具有 奇怪的 缩放比例。建议调整 cover_img_scale 配置选项以获得最佳效果,因为缩放与不同的终端和字体不同。

图像渲染示例

  • iterm2

iTerm2

  • 小猫

kitty

  • Sixel(foot 终端,cover_img_scale=1.8

sixel

  • 其他

others

通知

要启用桌面通知支持,需要将 spotify_player 构建或安装带有 notify 功能(默认情况下是禁用的)。要安装包含 notify 功能的应用程序,请运行

cargo install spotify_player --features notify

注意:与 Linux 相比,MacOSWindows 中的通知支持相当有限。

鼠标支持

目前,鼠标的唯一支持用例是通过在播放进度条中左键单击到当前位置来查找当前播放的位置。

守护进程

要启用 守护进程 支持,需要将 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 -hspotify_player {command} -h,其中 {command} 是 CLI 命令。

注意事项

  • 首次使用 CLI 时,您需要先运行 spotify_player authenticate 以验证应用程序。
  • 在底层,CLI 命令通过向运行在端口 client_port 上的 spotify_player 客户端套接字发送请求来处理,这是一个通用应用程序配置,默认值为 8080。如果没有运行应用程序的实例,在处理 CLI 命令时将创建新的客户端,这会增加命令的延迟。

命令

要访问快捷键帮助页面,请按 ?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-cq
ClosePopup 关闭弹出窗口 esc
SelectNextOrScrollDown 选择列表/表格中的下一项或向下滚动 jC-ndown
SelectPreviousOrScrollUp 选择列表/表格中的上一项或向上滚动 kC-pup
PageSelectNextOrScrollDown 选择列表/表格中的下一页项或向下滚动一页 page_downC-f
PageSelectPreviousOrScrollUp 选择列表/表格中的上一页项或向上滚动一页 page_upC-b
SelectFirstOrScrollToTop 选择列表/表格中的第一项或滚动到顶部 g ghome
SelectLastOrScrollToBottom 选择列表/表格中的最后一项或滚动到底部 Gend
ChooseSelected 选择所选项 enter
RefreshPlayback 手动刷新当前播放 r
RestartIntegratedClient 重新启动集成librespot客户端(仅限 streaming 功能) R
ShowActionsOnSelectedItem 打开一个弹出窗口,显示所选项的操作 g aC-space
ShowActionsOnCurrentTrack 打开一个弹出窗口,显示当前曲目的操作 a
AddSelectedItemToQueue 将所选项添加到队列 ZC-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 转到当前曲目歌词页面(仅限lyric-finder功能) g Ll
LibraryPage 转到用户库页面 g l
SearchPage 转到搜索页面 g s
BrowsePage 转到浏览页面 g b
Queue 转到队列页面 z
OpenCommandHelp 转到命令帮助页面 ?C-h
PreviousPage 转到上一页 退格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

要添加新快捷键或修改默认快捷键,请参阅配置文档中的键映射部分

动作

有一个一般动作列表可用;然而,并非所有Spotify项目(曲目、专辑、艺术家或播放列表)都实现了每个动作。要获取项目上的可用动作列表,请调用ShowActionsOnCurrentTrack命令或ShowActionsOnSelectedItem命令,然后按回车(默认绑定到ChooseSelected命令)以启动选定的动作。一些动作可能不会出现在弹出窗口中,但可以绑定到快捷键。

可用动作列表

  • GoToArtist
  • GoToAlbum
  • GoToRadio
  • AddToLibrary
  • AddToPlaylist
  • AddToQueue
  • AddToLiked
  • DeleteFromLiked
  • DeleteFromLibrary
  • DeleteFromPlaylist
  • ShowActionsOnAlbum
  • ShowActionsOnArtist
  • ToggleLiked
  • CopyLink
  • Follow
  • Unfollow

这些动作也可以绑定到快捷键。要添加新快捷键,请参阅配置文档中的动作部分

搜索页面

首次进入搜索页面时,应用程序将焦点放在搜索输入上。用户可以输入文本,使用退格删除一个字符,或使用回车搜索文本。

要使焦点从搜索输入移动到其他窗口,例如曲目结果、专辑结果等,请使用FocusNextWindowFocusPreviousWindow

配置

默认情况下,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_LOGspotify_player=INFO,它只显示应用程序的日志。

致谢

spotify_player 使用 Rust 编写,并建立在如 tui-rsrspotifylibrespot 以及许多其他库之上。它深受 spotify-tuincspot 的启发。


lib.rs:

lyric_finder

此包提供了一个 Client 结构体,用于检索歌曲的歌词。

它利用 Genius 网站及其 API 来获取歌词数据。

示例

#
let client =  lyric_finder::Client::new();
let result = client.get_lyric("shape of you").await?;
match result {
    lyric_finder::LyricResult::Some {
        track,
        artists,
        lyric,
    } => {
        println!("{} by {}'s lyric:\n{}", track, artists, lyric);
    }
    lyric_finder::LyricResult::None => {
        println!("lyric not found!");
    }
}

依赖关系

~5–16MB
~241K SLoC