这个项目能做什么

Limusic 是一款原生桌面 YouTube Music 客户端,基于 Tauri 2、Rust 和 SvelteKit 单页 UI 构建。它直接与 YouTube 内部 API 通信,并通过 libmpv 播放音频,因此没有捆绑的浏览器运行时、没有后端服务器,也没有 Electron。该项目最初是对 Metrolist(一款 Android YouTube Music 客户端)播放引擎的桌面重写。 播放与音乐库 音频流来自 YouTube API,且不会播放广告。搜索和浏览覆盖歌曲、专辑、艺术家、播放列表和 YouTube Music 首页信息流,结果会在输入时实时预览。用户可以通过应用内 Google 登录或粘贴 cookies 使用 YouTube Music 账号登录,并可同时保存多个账号进行切换。音乐库视图展示播放列表、喜欢的歌曲、已保存的专辑和艺术家、上传内容,以及写入操作,例如喜欢、添加到播放列表、创建、编辑和删除播放列表(包括封面图)、订阅以及保存到音乐库。播放历史保存在 YouTube Music 自己的按天分组中。无缝播放和响度归一化由 libmpv 处理,队列支持电台/自动混音续播、拖拽重新排序以及跨重启恢复。本地音频文件也可以播放,并保留其元数据。 界面与集成 同步歌词显示在侧边面板中,支持自动滚动和点击跳转;在来源提供时间轴时支持逐词显示,并在每行下方显示翻译。歌词首先从 Boidu 获取,然后依次从 LRCLIB、YouTube Music 的定时歌词、Netease、QQ Music 和 Kugou 获取,最后回退到纯文本,结果会缓存在本地。可选音乐视频会在封面图所在位置播放。提供迷你播放器和影院模式。Last.fm 记录可从标题栏连接,并在播放到一半或四分钟时记录,以先到者为准。Discord Rich Presence 显示曲目、艺术家、封面图和进度条。通过 Linux 上的 MPRIS 和 Windows 上的 SMTC 支持操作系统媒体键和正在播放集成,并支持任务栏预览按钮。系统托盘可在窗口关闭后保持播放,提供播放/暂停和跳过控制,并可选开机启动。一起听通过一个小型自托管中继提供同步收听房间;每位参与者播放自己的音频,而房间中继播放/暂停、跳转、曲目切换和队列,并支持加入码和主持人批准。键盘快捷键包括 Ctrl+K 用于搜索,Ctrl+H 用于快捷键列表,Ctrl 加滚轮可缩放界面。 自定义与语言 该应用提供强调色调色板、自定义颜色、自定义字体、圆角程度、自定义应用图标,以及会根据正在播放的封面重新着色的自适应主题。目前内置六种语言:英语、西班牙语、法语、土耳其语、巴西葡萄牙语和印度尼西亚语,还有更多语言正在开发中。翻译通过 Weblate 管理,而不是通过拉取请求。 平台与打包 提供适用于 Windows(带自更新的 setup.exe,或 .msi)、Linux(带捆绑 libmpv 的自更新 AppImage、.deb、.rpm)和 macOS Apple Silicon(.dmg,未签名)的构建版本。Intel macOS 构建需从源码编译。社区维护的软件包包括 Arch AUR、Fedora COPR 和 openSUSE Tumbleweed。从源码构建需要 libmpv 和 webkit2gtk 开发包、用于 UI 的 pnpm,以及用于 Rust 侧的 Cargo/Tauri。从源码构建时,Last.fm 集成需要在 src-tauri/lastfm.keys 中提供开发者自己的 API key 和 secret;没有该文件时,其余部分仍可构建并运行。 架构说明 一个纯 Rust crate 负责与 YouTube 的 InnerTube API 通信,模拟多个官方客户端身份并在它们之间回退。音频流 URL 受混淆 JavaScript(签名加密和 n 参数)以及 BotGuard 认证保护;Limusic 在与 UI 进程隔离的隐藏真实 webview 中运行该 JavaScript。音频通过带磁盘缓存的 libmpv 播放。SvelteKit UI 只与 Rust 核心通信,绝不直接联系 YouTube。该项目采用 GPL-3.0 许可,并声明其与 YouTube 或 Google 无关联。