13 个版本
新 0.0.13 | 2024 年 8 月 17 日 |
---|---|
0.0.12 | 2024 年 8 月 12 日 |
0.0.9 | 2024 年 7 月 31 日 |
0.0.5 | 2024 年 6 月 28 日 |
0.0.3 | 2023 年 12 月 13 日 |
#40 在 音频
919 每月下载次数
655KB
16K SLoC
关于
有推 - 一个使用 Rust 编写的简单 TUI YouTube 音乐播放器,旨在实现艺术家->专辑的工作流程以搜索音乐,并使用可发现性原则进行导航。受 https://github.com/ccgauche/ytermusic/ 和 cmus 启发。
Ytmapi-rs - 一个使用 Google 内部 API、Tokio 和 Reqwest 的异步 YouTube 音乐 API。受 https://github.com/sigma67/ytmusicapi/ 启发。
此项目不受 Google 支持或认可。
功能
- 快速轻松显示整个艺术家的唱片集
- 缓冲即将到来的歌曲
- 搜索建议
- 排序和过滤
演示
安装 youtui
Arch Linux
paru-S youtui
FreeBSD
pkg install youtui
Cargo
cargoinstall youtui
运行 youtui
默认选项是使用 OAuth 认证。要将此更改为浏览器认证,可以在本地 youtui 配置目录中添加一个 config.toml
文件(例如,Linux 上的 ~/.config/youtui/
),其中值为 auth_type = "Browser"
。请注意,然而,配置文件格式目前不稳定,未来可能会更改。
命令
- 要运行 TUI 应用程序,请无参数执行
youtui
。 - 要在命令行模式中使用 API,请执行
youtui --help
以查看可用命令。
OAuth 设置步骤
- 通过运行
youtui setup-oauth
并遵循说明在默认配置目录中设置 oauth 令牌。
浏览器认证设置步骤
- 在您的浏览器中打开 YouTube Music - 确保您已登录。
- 打开网页开发者工具(F12)。
- 打开“网络”标签页,找到对
music.youtube.com
的 POST 请求。 - 将
Cookie
复制到本地 youtui 配置目录中名为cookie.txt
的文本文件中。注意,如果该目录不存在,您需要创建它。Firefox 示例(右键单击并复制值): Chrome 示例(手动选择并粘贴):
依赖项说明
通用
- 需要可以渲染 FontAwesome 符号的字体。
Linux 特定
- Youtui 使用 Rodio 库进行播放,该库依赖于 Cpal https://github.com/rustaudio/cpal 以支持 ALSA。cpal 的自述文件中提到,需要 ALSA 开发文件,这些文件可以在以下软件包中找到
libasound2-dev
(Debian / Ubuntu)alsa-lib-devel
(Fedora)
限制
- 该项目正在积极开发中,接口可能会随时更改。项目将使用语义版本控制来指示接口何时稳定。
- 当前使用计时器模拟歌曲进度更新,可能略有偏差。
路线图
应用
- Windows 支持(目标为 0.0.1)
- 配置文件夹支持(目标为 0.0.1)
- 实现改进的下载速度
- 筛选(目标为 0.0.3)
- 将日志记录到文件
- 发布到 AUR(目标为 0.0.4)
- 删除对 rust 夜间版的依赖(目标为 0.0.4)
- 媒体键的 Dbus 支持
- 搜索
- 鼠标支持
- 离线缓存
- 缓冲曲目流
- OAuth 认证包括自动刷新令牌
- 显示歌词和专辑封面(像素艺术)
- 主题
- 可配置的快捷键绑定
API
- 文档公共 API
- 使用库自动更新用户代理
- 实现端点续传
- 实现所有端点
- OAuth 认证
- i18n
与 ytmusicapi
功能一致性
端点 | 已实现:查询 | 已实现:续传 |
---|---|---|
GetArtist | [x] | |
GetAlbum | [x]* | |
GetArtistAlbums | [x] | |
搜索 | [x] | [ ] |
GetSearchSuggestions | [x] | |
GetHome | 未计划* | |
GetAlbumBrowseId | [ ] | |
GetUser | [ ] | |
GetUserPlaylists | [ ] | |
GetSong | [ ]* | |
GetSongRelated | [ ] | |
GetLyrics | [x] | |
GetTasteProfile | [x] | |
SetTasteProfile | [x] | |
GetMoodCategories | [x] | |
GetMoodPlaylists | [x] | |
GetCharts | 未计划* | |
GetWatchPlaylist | [x]* | [ ] |
GetLibraryPlaylists | [x] | [ ] |
GetLibrarySongs | [x] | [ ] |
GetLibraryAlbums | [x] | [ ] |
GetLibraryArtists | [x] | [ ] |
GetLibrarySubscriptions | [x] | [ ] |
GetLibraryPodcasts | [ ] | [ ] |
GetLibraryChannels | [ ] | [ ] |
GetLikedSongs | [ ] | [ ] |
GetSavedEpisodes | [ ] | [ ] |
GetHistory | [x] | |
AddHistoryItem | [x] | |
RemoveHistoryItem | [x] | |
RateSong | [x] | |
EditSongLibraryStatus | [x] | |
RatePlaylist | [x] | |
SubscribeArtists | [ ] | |
UnsubscribeArtists | [ ] | |
GetPlaylist | [x] | [ ] |
CreatePlaylist | [x] | |
EditPlaylist | [x] | |
DeletePlaylist | [x] | |
AddPlaylistItems | [x] | |
RemovePlaylistItems | [x] | |
GetChannel | [ ] | |
GetChannelEpisodes | [ ] | |
GetPodcast | [ ] | [ ] |
GetEpisode | [ ] | |
GetEpisodesPlaylist | [ ] | |
GetLibraryUploadSongs | [x] | [ ] |
GetLibraryUploadArtists | [x] | [ ] |
GetLibraryUploadAlbums | [x] | [ ] |
GetLibraryUploadArtist | [x] | [ ] |
GetLibraryUploadAlbum | [x] | |
UploadAlbum | [ ] | |
DeleteUploadEntity | [x] |
* GetWatchPlaylist 仅部分实现
- 仅返回播放列表和歌词 ID
* GetArtist 仅部分实现
- 仅返回专辑和歌曲
* 仅实现了 GetSong 的跟踪 URL - 作为 GetSongTrackingUrl。GetSong 的任何其他功能目前尚未计划 - 建议查看 rusty_ytdl
库以获取这些功能。
注意,显著动态的页面,如“首页”,目前尚未计划。
开发者注意事项
有关更多信息,请参阅维基:https://github.com/nick42d/youtui/wiki
依赖项
~45–81MB
~1.5M SLoC