#music-player #music #youtube #tui #player #google-api

app youtui

一个简单的 TUI YouTube 音乐播放器

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音频

Download history 4/week @ 2024-05-03 2/week @ 2024-05-17 4/week @ 2024-05-24 6/week @ 2024-05-31 4/week @ 2024-06-07 2/week @ 2024-06-14 7/week @ 2024-06-21 166/week @ 2024-06-28 45/week @ 2024-07-05 149/week @ 2024-07-12 272/week @ 2024-07-19 229/week @ 2024-07-26 304/week @ 2024-08-02 160/week @ 2024-08-09 195/week @ 2024-08-16

919 每月下载次数

MIT 许可证

655KB
16K SLoC

dependency status build

关于

有推 - 一个使用 Rust 编写的简单 TUI YouTube 音乐播放器,旨在实现艺术家->专辑的工作流程以搜索音乐,并使用可发现性原则进行导航。受 https://github.com/ccgauche/ytermusic/ 和 cmus 启发。

Ytmapi-rs - 一个使用 Google 内部 API、Tokio 和 Reqwest 的异步 YouTube 音乐 API。受 https://github.com/sigma67/ytmusicapi/ 启发。

此项目不受 Google 支持或认可。

功能

  • 快速轻松显示整个艺术家的唱片集
  • 缓冲即将到来的歌曲
  • 搜索建议
  • 排序和过滤

演示

asciicast

安装 youtui

Packaging status

Arch Linux

paru-S youtui

FreeBSD

pkg install youtui

Cargo

cargoinstall youtui

运行 youtui

默认选项是使用 OAuth 认证。要将此更改为浏览器认证,可以在本地 youtui 配置目录中添加一个 config.toml 文件(例如,Linux 上的 ~/.config/youtui/),其中值为 auth_type = "Browser"。请注意,然而,配置文件格式目前不稳定,未来可能会更改。

命令

  1. 要运行 TUI 应用程序,请无参数执行 youtui
  2. 要在命令行模式中使用 API,请执行 youtui --help 以查看可用命令。

OAuth 设置步骤

  1. 通过运行 youtui setup-oauth 并遵循说明在默认配置目录中设置 oauth 令牌。

浏览器认证设置步骤

  1. 在您的浏览器中打开 YouTube Music - 确保您已登录。
  2. 打开网页开发者工具(F12)。
  3. 打开“网络”标签页,找到对 music.youtube.com 的 POST 请求。
  4. Cookie 复制到本地 youtui 配置目录中名为 cookie.txt 的文本文件中。注意,如果该目录不存在,您需要创建它。Firefox 示例(右键单击并复制值):image Chrome 示例(手动选择并粘贴):image

依赖项说明

通用

  • 需要可以渲染 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