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