[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74626":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":18,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":28,"readmeContent":29,"aiSummary":30,"trendingCount":16,"starSnapshotCount":16,"syncStatus":31,"lastSyncTime":32,"discoverSource":33},74626,"go-music-dl","guohuiyuan\u002Fgo-music-dl","guohuiyuan","一个基于 Go 语言的全网音乐搜索与下载工具。支持 CLI 命令行与 Web 服务双模式，内置网易云、QQ、酷狗、Bilibili、汽水音乐等 10+ 个主流平台，支持多源并发搜索与无损音质解析。music-dl交流群：1074285005","https:\u002F\u002Fmusic.zkkp.nyc.mn",null,"Go",3163,274,12,32,0,44,132,349,109.32,"GNU Affero General Public License v3.0",false,"main",true,[26,27],"go","music","2026-06-12 04:01:15","# Go Music DL\n\n> ⭐ 如果这个项目正在帮你省时间，欢迎顺手点一个 Star。Star 越多，作者越能确认这个工具确实有人在用，也会更有动力优先修复失效站点、适配新站点和更新版本。\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\".\u002Finternal\u002Fweb\u002Ftemplates\u002Fstatic\u002Fimages\u002Ficon.png\" alt=\"Music Downloader Icon\" width=\"220\" \u002F>\n\u003C\u002Fp>\n\nGo Music DL 是一个音乐搜索与下载工具，支持 **Web 界面**、**TUI 终端** 和 **桌面应用** 三种使用模式。除了单曲搜索与下载外，还支持 **歌单搜索 \u002F 解析**、**歌单分类浏览**、**我的歌单**、**专辑搜索 \u002F 解析**、整单 \u002F 整专曲目查看与批量处理。你可以在浏览器试听，也可以在终端里批量下载，或使用原生桌面应用享受最佳体验。\n\n## 🚀 快速开始\n\n### 桌面应用 (推荐)\n\n最简单的使用方式，下载即用：\n\n1. 从 [Releases](https:\u002F\u002Fgithub.com\u002Fguohuiyuan\u002Fgo-music-dl\u002Freleases) 下载 `music-dl-desktop-rust.exe` 或 `music-dl-desktop-go.exe`\n2. 解压，双击运行\n3. 享受原生桌面体验！\n\n移动端下载说明：在 [Releases](https:\u002F\u002Fgithub.com\u002Fguohuiyuan\u002Fgo-music-dl\u002Freleases) 页面可直接下载 Android `music-dl_arm64-v8a.apk`（推荐）\u002F `music-dl_x86_64.apk` \u002F `music-dl.apk`（无分片兼容包）与 iOS `music-dl-ios-unsigned.ipa`。\n\n### Web 模式\n\n```bash\n.\u002Fmusic-dl web\n\n```\n\n### TUI 模式\n\n```bash\n.\u002Fmusic-dl -k \"搜索关键词\"\n\n```\n\n---\n\n![Web UI 1](.\u002Fscreenshots\u002Fweb1.png)\n![Web UI 2](.\u002Fscreenshots\u002Fweb2.png)\n\n![TUI 1](.\u002Fscreenshots\u002Ftui1.png)\n![TUI 2](.\u002Fscreenshots\u002Ftui2.png)\n\n## 主要功能\n\n* **多模式支持**: Web 界面、TUI 终端、桌面应用\n* **本地自制歌单**: 支持新建本地收藏夹，随时收藏、管理心仪歌曲，数据持久化不丢失\n* **歌单分类浏览**: Web 端可按平台查看官方分类，进入分类后浏览推荐歌单并打开详情\n* **我的歌单**: Web 端可读取已登录账号的个人歌单 \u002F 收藏歌单，支持进入详情和批量处理\n* **Cookie 扫码登录**: Web 设置面板支持扫码获取 Cookie，成功后自动保存到本地配置；汽水音乐扫码登录暂未调通，入口已临时隐藏\n* **本地音乐管理**: Web 端可读取本地下载目录音乐，支持上传、添加到自制歌单、封面\u002F歌词读取与删除；列表默认分页加载并缓存扫描与元数据，几千首本地音乐也能秒开\n* **无损音乐支持**: 支持网易云、QQ 音乐、Bilibili 的 FLAC 无损音乐下载\n* 多平台聚合搜索，支持单曲 \u002F 歌单 \u002F 专辑\n* 试听、歌词、封面下载\n* **歌词双格式支持**: 网易云、QQ 音乐、酷狗支持原文 \u002F 译文 \u002F 罗马音逐字 LRC 展示与卡拉 OK 式逐字高亮；其他渠道保持原文逐行歌词显示\n* Range 探测：显示大小与码率\n* 汽水音乐等加密音频解密\n* 过滤需要付费的资源\n* **桌面应用特性**: 原生窗口、自动服务启动、智能缓存管理\n\n## 歌单 \u002F 专辑支持\n\n* **Web**: 支持单曲、歌单、专辑三种搜索类型切换，可直接查看歌单 \u002F 专辑曲目列表\n* **链接解析**: 支持直接粘贴歌单链接或专辑链接，自动识别来源并进入详情\n* **歌单分类**: Web 端提供“歌单分类”入口，可在不同平台之间切换分类来源，并按分类浏览歌单\n* **我的歌单**: Web 端提供“我的歌单”入口，登录后可查看个人创建、收藏或喜欢的歌单\n* **TUI**: 输入界面支持在单曲 \u002F 歌单 \u002F 专辑之间切换，适合整单 \u002F 整专处理\n* **详情跳转**: Web 歌曲列表支持从歌曲跳转到歌手搜索结果或对应专辑页\n* **渠道同步**: 已同步 `music-lib` 中咪咕、Jamendo、JOOX、千千、汽水等歌单 \u002F 专辑函数，JOOX 歌单支持 OpenJOOX 接口和网页数据兜底\n\n## 歌单分类与我的歌单\n\nWeb 首页的歌单入口旁提供 **歌单分类** 和 **我的歌单**：\n\n* **歌单分类**: 支持网易云、QQ、酷狗、酷我、咪咕、千千、JOOX、Apple Music。进入后可切换平台标签，选择分类并查看该分类下的歌单。\n* **我的歌单**: 支持网易云、QQ、酷狗、汽水。需要先在 Web 右上角“设置”中配置对应平台 Cookie；QQ 支持“我喜欢的歌曲”和收藏歌单，汽水支持“喜欢的音乐”和导入歌单，均可在站内解析歌曲列表。\n* **详情与导入**: 分类歌单和我的歌单都可进入详情页，歌曲列表支持播放、下载、批量操作，也可导入到本地自制歌单。\n\n## Cookie 与扫码登录\n\nWeb 右上角“设置”可管理各平台 Cookie。支持扫码登录的平台会在 Cookie 输入框右侧显示 **扫码** 按钮：\n\n* **支持平台**: 网易云音乐、QQ 音乐、酷狗音乐、Bilibili。\n* **使用方式**: 点击对应平台“扫码”，用官方 App 扫码并确认登录；登录成功后 Cookie 会自动写入输入框并保存到本地。\n* **汽水音乐**: 新版官方 PC passport 扫码流程依赖动态 `a_bogus` \u002F `msToken` 风控签名，目前未调通，Web 端已临时隐藏扫码入口；需要汽水个人歌单或下载能力时请先手动配置 Cookie。\n* **用途**: Cookie 可用于获取更完整的搜索 \u002F 下载能力、读取“我的歌单”、访问部分需要登录态的高音质或个人数据。\n* **存储位置**: Cookie 会保存到本地数据目录，不会上传到第三方服务；请勿把包含 Cookie 的配置文件公开分享。\n\n## 本地音乐\n\nWeb 端在“我的自制歌单”旁提供 **本地音乐** 入口，用于管理本地下载目录里的音频文件。下载目录来自 Web 右上角“设置”里的“本地下载目录”，默认是 `data\u002Fdownloads`。Android 端建议把本地下载目录设置为 `\u002Fsdcard\u002FMusic`，便于系统音乐应用识别。\n\n* **自动读取**: 打开本地音乐列表时会扫描下载目录，返回与普通歌曲列表一致的数据结构，来源标记为 `local`。\n* **支持格式**: `mp3`、`flac`、`m4a`、`ogg`、`wav`、`wma`、`aac`。\n* **上传音乐**: 可在弹窗中上传音频文件，文件会保存到下载目录；如文件名冲突，会自动追加序号。\n* **信息补全**: 优先读取音频文件内的标题、歌手、专辑、时长、封面和歌词；缺失时会使用文件名、`Unknown` 等兜底信息。\n* **耗时探测**: 时长、码率、标题、歌手、专辑等缺失信息会尽量通过 `ffprobe` 探测补齐；未安装 `ffprobe` 时仍可显示和添加，只是部分信息可能为空。\n* **封面与歌词**: 封面优先读取音频内嵌图片，没有则查找同目录同名图片（`.jpg`、`.jpeg`、`.png`、`.webp`、`.bmp`、`.gif`）；歌词优先读取音频内嵌歌词，没有则查找同目录同名歌词文件（`.lrc`、`.txt`、`.lyric`）。\n* **添加到歌单**: 在本地音乐弹窗选择目标自制歌单后，可把本地歌曲加入该歌单；外部导入歌单 \u002F 专辑不支持直接添加本地音乐。\n* **删除**: 本地音乐列表支持单曲删除和批量删除，删除前会二次确认；确认后会从本地下载目录移除实际文件。\n* **限制**: 本地音乐不参与换源、批量换源、选择无效和批量下载等网络歌曲操作。\n\n### 本地音乐性能优化\n\n结合后端缓存与前端分页，减少重复扫盘 \u002F `ffprobe` \u002F tag 解析的开销：\n\n* **列表分页加载**: 本地音乐页面按 “Web 每页条数” 设置分页，支持 `PgUp \u002F PgDn` 快捷翻页与 URL `?page=` 状态保持，避免一次性渲染上千条。\n* **扫描快照缓存**: `GET \u002Fapi\u002Flocal_music` 结果会缓存 10 秒；TTL 内反复访问直接返回快照，不重扫。\n* **后台异步刷新**: 缓存过期会立即返回上次结果并启动后台异步重扫，页面顶部提示“正在后台刷新本地音乐列表，当前显示上次扫描结果”。\n* **元数据缓存**: 每首歌的标题 \u002F 歌手 \u002F 专辑 \u002F 封面 \u002F 歌词 \u002F 时长 \u002F 码率按 `路径 + 文件大小 + 修改时间` 索引；命中后跳过 `ffprobe` 与 tag 解析，文件未变动时几乎零开销。\n* **失效触发**: 上传、删除本地音乐后会立即作废快照缓存，下一次请求重新扫描。\n* **强制刷新**: 调用 API 时传 `?refresh=1` 可绕过缓存进行整目录重扫。\n* **Android 读取修复**: 在 Android 端动态申请 `READ_MEDIA_AUDIO` \u002F `READ_EXTERNAL_STORAGE` 权限，修复了 `\u002Fsdcard\u002FMusic` 下本地音乐无法读取的问题。\n\n## Web 下载模式与 FFmpeg\n\nWeb 端“设置”里新增了 **下载时内嵌元数据（封面\u002F歌词）** 开关：\n\n* **默认关闭（推荐）**：走流式下载，速度更快，并支持 `Range` 断点\u002F拖动播放。\n* **开启后**：下载时会尝试把封面、歌词写入音频文件（embed）。\n\n> ⚠️ 开启内嵌元数据依赖 **FFmpeg**。未安装 FFmpeg 时，会自动跳过内嵌并返回原始音频。\n\n可先验证 FFmpeg 是否可用：\n\n```bash\nffmpeg -version\n\n```\n\n常见安装方式：\n\n* Windows: `winget install Gyan.FFmpeg`\n* macOS: `brew install ffmpeg`\n* Ubuntu\u002FDebian: `sudo apt install ffmpeg`\n\n### Docker \u002F Release 包里的 FFmpeg 与 ffprobe\n\n`ffprobe` 属于 FFmpeg 工具集，主要用于本地音乐的时长、码率和标签探测；`ffmpeg` 主要用于非 MP3 音频的封面\u002F歌词元数据写入。缺少它们不会影响程序启动，也不会阻塞本地音乐列表加载，只会降级相关增强能力。\n\n* **Docker 镜像**: `Dockerfile` 已安装 Alpine 的 `ffmpeg` 包，并在构建时校验 `ffmpeg` 与 `ffprobe` 都可用；Docker \u002F Compose 部署通常无需额外安装。\n* **GitHub Release 的 CLI \u002F 桌面 \u002F 移动端包**: `release.yml` 产物默认不内置 `ffmpeg\u002Fffprobe`，也不要求 CI 打包机安装它们；如果需要本地音乐探测或非 MP3 元数据内嵌，请在运行机器上按上面的命令自行安装 FFmpeg。\n* **Linux deb\u002Frpm\u002FAppImage**: 仍按外部系统工具处理，不强制声明硬依赖，避免在不同发行版上因为 FFmpeg 包源差异导致安装失败。\n\n## 新增改动（简要）\n\n* **Web 架构全面重构**：前端代码彻底模块化（拆分独立的 JS \u002F CSS \u002F HTML 模板），后端路由按业务域拆分（音乐查询、歌单管理、视频生成），大幅提升代码可维护性。\n* **新增自制歌单功能**：Web 端支持本地收藏夹，用户可自由创建、编辑歌单，将不同平台的歌曲聚合收藏。\n* **新增歌单分类与我的歌单**：Web 端支持官方分类浏览，也支持读取网易云、QQ、酷狗、汽水账号下的个人歌单 \u002F 收藏歌单。\n* **新增 Cookie 扫码登录**：设置面板支持网易云、QQ、酷狗、Bilibili 扫码登录，成功后自动保存 Cookie；汽水音乐新版扫码登录因动态 `a_bogus` \u002F `msToken` 风控签名暂未调通，入口已临时隐藏。\n* **新增本地音乐功能**：Web 端支持读取本地下载目录、上传音频、自动补全元信息、读取同名封面\u002F歌词，并可添加到自制歌单。\n* **本地音乐性能优化**：本地音乐列表支持分页加载、扫描快照与元数据缓存，过期后后台异步刷新不阻塞请求；上传 \u002F 删除会自动作废缓存，Android 端修复了 `READ_MEDIA_AUDIO` 权限申请以读取 `\u002Fsdcard\u002FMusic`。\n* **逐字歌词增强**：Web 首页、歌曲详情页与视频渲染统一支持网易云 \u002F QQ 音乐 \u002F 酷狗的原文、译文、罗马音逐字歌词；其他渠道继续使用原文逐行歌词。\n* Web 试听按钮支持播放\u002F停止切换，底部增加全局播放与音量控制栏。\n* Web 单曲支持“换源”，按相似度优先、时长接近、可播放验证。\n* 换源自动排除 soda 与 fivesing。\n* TUI 增加 r 键批量换源，并显示换源进度。\n* 增加“每日歌单推荐”，Web 和 TUI 都能看。\n* 同步 `music-lib` 歌单 \u002F 专辑渠道函数，补齐咪咕、Jamendo、JOOX、千千等歌单搜索、详情和链接解析映射。\n* Web 端支持批量操作：全选、选择无效、批量下载、批量换源。\n\n## 快速开始\n\n### 桌面应用模式\n\n桌面应用提供了原生窗口体验，无需打开浏览器即可使用。\n\n#### 特性\n\n* 🖥️ 原生桌面窗口，无需浏览器\n* 🚀 自动启动内置Web服务器\n* 🎵 完整Web界面功能\n* 📦 单文件分发，绿色免安装\n* 🖼️ 自定义窗口图标\n* 🔒 使用罕见端口(37777)，避免端口冲突\n\n### Docker 部署\n\n本项目提供了多种 Docker 部署方式。当前默认通过 `.\u002Fdata` 目录挂载到容器内 `\u002Fhome\u002Fappuser\u002Fdata`，下载文件、配置与收藏数据都会持久化到该目录。\n\n*注意：首次运行前必须先创建 `data` 目录（如 `mkdir -p data && chmod 777 data`），便于宿主机直接访问下载与配置数据。*\n\n#### 1. 生产环境部署（推荐）\n\n项目包含 `docker-compose.yml` 文件，直接拉取云端预编译镜像，无需在本地构建：\n\n```bash\n# 拉取最新镜像\ndocker compose pull\n\n# 后台启动服务\ndocker compose up -d --remove-orphans\n\n# 或一条命令拉取并启动\ndocker compose up -d --pull always --remove-orphans\n\n# 查看日志\ndocker compose logs -f\n\n# 停止服务\ndocker compose down\n\n```\n\n浏览器访问 `http:\u002F\u002Flocalhost:8080`。\n\n**说明：**\n\n* 自动拉取 `guohuiyuan\u002Fgo-music-dl:latest` 镜像\n* 支持后台运行和自动重启\n* 默认使用 `.\u002Fdata` 本地目录做数据持久化，便于直接查看和备份\n* 设置时区为亚洲上海\n* 以非root用户(uid=1000)运行，提高安全性\n\n#### 2. 开发环境部署（本地构建）\n\n如果您修改了源码，希望在本地通过 Docker 重新构建并测试效果，请使用 `docker-compose.dev.yml`：\n\n```bash\n# 强制在本地使用 Dockerfile 进行构建并启动\ndocker compose -f docker-compose.dev.yml up -d --build --remove-orphans\n\n```\n\n#### 3. 纯命令行模式 (docker run)\n\n如果不使用 Compose，也可以直接通过命令行运行：\n\n```bash\ndocker run -d --name music-dl \\\n  -p 8080:8080 \\\n  -v $(pwd)\u002Fdata:\u002Fhome\u002Fappuser\u002Fdata \\\n  -e TZ=Asia\u002FShanghai \\\n  --user 1000:1000 \\\n  --restart unless-stopped \\\n  guohuiyuan\u002Fgo-music-dl:latest \\\n  .\u002Fmusic-dl web --port 8080 --no-browser\n\n# Windows PowerShell\ndocker run -d --name music-dl -p 8080:8080 -v ${PWD}\u002Fdata:\u002Fhome\u002Fappuser\u002Fdata -e TZ=Asia\u002FShanghai --user 1000:1000 --restart unless-stopped guohuiyuan\u002Fgo-music-dl:latest .\u002Fmusic-dl web --port 8080 --no-browser\n\n```\n\n视频生成相关的“更换封面 \u002F 更换音频 \u002F 更换歌词 \u002F 导出视频”按钮已迁移到 Web 设置中管理，默认关闭，可在网页右上角设置面板中开启。\n\n### CLI\u002FTUI 模式\n\n```bash\n# 搜索\n.\u002Fmusic-dl -k \"周杰伦\"\n\n```\n\nTUI 常用按键：\n\n* `↑\u002F↓` 移动\n* `空格` 选择\n* `a` 全选\u002F清空\n* `r` 对勾选项换源\n* `Enter` 下载\n* `b` 返回\n* `w` 每日推荐歌单\n* `q` 退出\n\n更多用法：\n\n```bash\n# 查看帮助\n.\u002Fmusic-dl -h\n\n# 指定搜索源\n.\u002Fmusic-dl -k \"周杰伦 晴天\" -s qq,netease\n\n# 指定下载目录\n.\u002Fmusic-dl -k \"周杰伦\" -o .\u002Fmy_music\n\n# 下载时包含封面和歌词\n.\u002Fmusic-dl -k \"周杰伦\" --cover --lyrics\n\n```\n\n## GitHub Actions 自动构建\n\n本项目已配置 GitHub Actions 工作流。当推送代码并打上版本标签（如 `v1.0.0`）时，会自动触发 `.github\u002Fworkflows\u002Fdocker.yml`，构建跨平台镜像（支持 amd64 和 arm64）并推送到 DockerHub。\n\n### Android APK 构建\n\n项目支持通过 Gio 打包 Android APK，输出文件为仓库根目录下的三个 APK：\n\n* `music-dl_arm64-v8a.apk`（推荐，大多数 Android 设备）\n* `music-dl_x86_64.apk`（x86_64 设备\u002F模拟器）\n* `music-dl.apk`（无分片兼容包，极个别设备无法使用分片包时再下载）\n\n安装 Android APK 后，建议在 Web 右上角“设置”中把“本地下载目录”改为 `\u002Fsdcard\u002FMusic`，这样下载文件会直接进入系统音乐目录。\n\n#### 1. 本地构建 APK（Windows）\n\n前置条件：\n\n* Go 已安装并可用（建议 1.25+）\n* JDK（推荐 17）\n* Android SDK 已安装，默认路径 `C:\\Android`\n* 可用的 NDK（脚本会自动尝试安装 `27.0.12077973`）\n\n执行命令：\n\n```bat\ncd go-music-dl\npackage_app.bat\n\n```\n\n脚本会自动：\n\n* 读取当前 Java 环境（`JAVA_HOME` \u002F `java`）\n* 检测\u002F安装 Android NDK\n* 安装 `gogio`\n* 构建 `music-dl_arm64-v8a.apk`、`music-dl_x86_64.apk`、`music-dl.apk`\n\n若检测到 adb，会打印安装命令，例如：\n\n```bat\nadb install -r music-dl.apk\n\n```\n\n#### 2. Release 流程自动构建 APK\n\n`.github\u002Fworkflows\u002Frelease.yml` 中新增了 `build-android-apk` 任务。发布时会在 `windows-latest` 环境中：\n\n* 安装 Go、JDK 17、Android SDK\n* 安装 `platform-tools`、`platforms;android-33`、`build-tools;34.0.0`、`ndk;27.0.12077973`\n* 执行 `package_app.bat`\n* 上传 `music-dl_arm64-v8a.apk`、`music-dl_x86_64.apk`、`music-dl.apk` 到 Actions Artifacts 和 GitHub Release\n\n发布后可在 [Releases](https:\u002F\u002Fgithub.com\u002Fguohuiyuan\u002Fgo-music-dl\u002Freleases) 下载三个 APK，推荐优先使用 `music-dl_arm64-v8a.apk`；极个别设备若无法安装\u002F运行，再下载 `music-dl.apk`（无分片兼容包）。\n\n#### 3. Java 17 与 Build-Tools 版本说明（重点）\n\n高版本（`34.0.0` 及以上）的 Android Build-Tools 已修复旧版 `d8.bat` 脚本兼容性问题，可正常配合 Java 17 使用。\n\n如果本地仍有 `33.0.0`，建议升级并清理旧版本：\n\n```cmd\n\"C:\\Android\\cmdline-tools\\latest\\bin\\sdkmanager.bat\" \"build-tools;34.0.0\"\n```\n\n如果你使用 Android Studio，也可以在 SDK Manager -> SDK Tools 中勾选 Show Package Details，然后安装 `34.0.0` 及以上版本。\n\n非常关键：请到 `C:\\Android\\build-tools\\` 目录下，删除或重命名 `33.0.0` 旧目录，避免 `gogio` 优先命中旧版 `d8`。\n\n完成后再次执行：\n\n```bat\ncd go-music-dl\npackage_app.bat\n```\n\n### iOS App 构建\n\n项目已提供 iOS 打包脚本：`package_ios.sh`。\n\n#### 1. 构建环境\n\n* macOS（需安装 Xcode Command Line Tools）\n* Go 已安装并可用\n* 可使用 `sudo`（脚本会在必要时补齐 Xcode 工具链中的 `libarclite` 文件）\n\n#### 2. 执行构建\n\n```bash\ncd go-music-dl\nchmod +x package_ios.sh\n.\u002Fpackage_ios.sh\n```\n\n脚本会自动：\n\n* 检查并补齐 `libarclite_iphonesimulator.a` \u002F `libarclite_iphoneos.a`\n* 安装 `gogio`\n* 构建 iOS App（输出 `music-dl.app`）\n* 打包为未签名 IPA（输出 `music-dl-ios-unsigned.ipa`）\n\n#### 3. 产物说明\n\n* `music-dl.app`：iOS 应用包目录\n* `music-dl-ios-unsigned.ipa`：未签名安装包，通常用于后续签名与分发流程\n\n发布后可在 [Releases](https:\u002F\u002Fgithub.com\u002Fguohuiyuan\u002Fgo-music-dl\u002Freleases) 下载 `music-dl-ios-unsigned.ipa`。\n\n> 注意：脚本会修改 Xcode 工具链目录（需要管理员权限），建议在受控开发环境中执行。\n\n**如果你 Fork 了本仓库并希望使用自己的构建流：**\n\n1. 在你的仓库 **Settings** -> **Secrets and variables** -> **Actions** 中添加：\n\n* `DOCKERHUB_USERNAME`: 你的 DockerHub 用户名\n* `DOCKERHUB_TOKEN`: 你的 DockerHub 访问令牌\n\n2. 将 `docker-compose.yml` 中的镜像地址修改为你自己的：`image: 你的用户名\u002Fgo-music-dl:latest`\n\n## Web 换源说明\n\n单曲卡片里的“换源”会在其它平台里找更像的版本：\n\n* 先看歌名\u002F歌手相似度\n* 再看时长差异（太大就跳过）\n* 最后做可播放探测\n\n当前会跳过 soda 与 fivesing。\n\n## 每日歌单推荐\n\nWeb 页面有“每日推荐”入口，会聚合网易云、QQ、酷狗、酷我。\nTUI 在输入界面按 `w` 直接拉取推荐歌单，然后回车进详情。\n\n## 支持平台\n\n| 平台        | 包名         | 搜索 | 下载 | 歌词 | 歌曲解析 | 歌单搜索 | 歌单推荐 | 歌单分类 | 我的歌单 | 扫码登录    | 歌单歌曲 | 歌单链接解析 | 专辑搜索 | 专辑歌曲 | 专辑链接解析 | 备注                                   |\n| ----------- | ------------ | ---- | ---- | ---- | -------- | -------- | -------- | -------- | -------- | ----------- | -------- | ------------ | -------- | -------- | ------------ | -------------------------------------- |\n| 网易云音乐  | `netease`  | ✅   | ✅   | ✅   | ✅       | ✅       | ✅       | ✅       | ✅       | ✅          | ✅       | ✅           | ✅       | ✅       | ✅           | 支持 FLAC 无损                         |\n| QQ 音乐     | `qq`       | ✅   | ✅   | ✅   | ✅       | ✅       | ✅       | ✅       | ✅       | ✅          | ✅       | ✅           | ✅       | ✅       | ✅           | 支持 FLAC 无损                         |\n| 酷狗音乐    | `kugou`    | ✅   | ✅   | ✅   | ✅       | ✅       | ✅       | ✅       | ✅       | ✅          | ✅       | ✅           | ✅       | ✅       | ✅           | 支持普通歌曲 FLAC 无损                 |\n| 酷我音乐    | `kuwo`     | ✅   | ✅   | ✅   | ✅       | ✅       | ✅       | ✅       | ❌       | ❌          | ✅       | ✅           | ✅       | ✅       | ✅           |                                        |\n| 咪咕音乐    | `migu`     | ✅   | ✅   | ✅   | ✅       | ✅       | ❌       | ✅       | ❌       | ❌          | ✅       | ✅           | ✅       | ✅       | ✅           | 歌单歌曲使用 MIGUM3 接口               |\n| 千千音乐    | `qianqian` | ✅   | ✅   | ✅   | ✅       | ⚠️     | ❌       | ✅       | ❌       | ❌          | ✅       | ✅           | ✅       | ✅       | ✅           | 歌单搜索可能返回空，已知 ID\u002F链接可解析 |\n| 汽水音乐    | `soda`     | ✅   | ✅   | ✅   | ✅       | ✅       | ❌       | ❌       | ✅       | ⚠️ 未调通 | ✅       | ✅           | ✅       | ✅       | ✅           | 音频解密，支持短链和个人歌单；扫码登录暂未调通 |\n| 5sing       | `fivesing` | ✅   | ✅   | ✅   | ✅       | ✅       | ❌       | ❌       | ❌       | ❌          | ✅       | ✅           | ❌       | ❌       | ❌           |                                        |\n| Jamendo     | `jamendo`  | ✅   | ✅   | ✅   | ✅       | ⚠️     | ❌       | ❌       | ❌       | ❌          | ✅       | ✅           | ✅       | ✅       | ✅           | 歌单搜索可能返回空，公开歌单链接可解析 |\n| JOOX        | `joox`     | ✅   | ✅   | ✅   | ✅       | ✅       | ❌       | ✅       | ❌       | ❌          | ✅       | ✅           | ✅       | ✅       | ✅           | 歌单支持 OpenJOOX 接口和网页数据兜底   |\n| Bilibili    | `bilibili` | ✅   | ✅   | ✅   | ✅       | ✅       | ❌       | ❌       | ❌       | ✅          | ✅       | ✅           | ❌       | ❌       | ❌           | 支持 FLAC 无损                         |\n| Apple Music | `apple`    | ✅   | ⚠️ | ✅   | ✅       | ✅       | ❌       | ✅       | ❌       | ❌          | ✅       | ✅           | ✅       | ✅       | ✅           | 下载仅 preview，完整需 gamdl 解密      |\n\n> `⚠️` 表示方法已接入，但平台搜索接口结果不稳定；优先使用已知 ID 或链接解析。\n\n## 歌曲链接解析\n\n支持直接解析音乐分享链接：\n\n```bash\n.\u002Fmusic-dl -k \"[https:\u002F\u002Fmusic.163.com\u002F#\u002Fsong?id=123456](https:\u002F\u002Fmusic.163.com\u002F#\u002Fsong?id=123456)\"\n\n```\n\n支持解析的平台：网易云、QQ音乐、酷狗、酷我、咪咕、Bilibili、汽水音乐、5sing、Jamendo、JOOX、千千音乐、Apple Music。\n\n## 歌单链接解析\n\n支持直接解析歌单\u002F合集分享链接：\n\n```bash\n.\u002Fmusic-dl -k \"[https:\u002F\u002Fmusic.163.com\u002F#\u002Fplaylist?id=123456](https:\u002F\u002Fmusic.163.com\u002F#\u002Fplaylist?id=123456)\"\n\n```\n\n支持解析的平台：网易云、QQ音乐、酷狗、酷我、咪咕、Jamendo、JOOX、千千音乐、汽水音乐、5sing、Bilibili、Apple Music。\n\n## 专辑链接解析\n\n支持直接解析专辑分享链接：\n\n```bash\n.\u002Fmusic-dl -k \"[https:\u002F\u002Fmusic.163.com\u002F#\u002Falbum?id=123456](https:\u002F\u002Fmusic.163.com\u002F#\u002Falbum?id=123456)\"\n\n```\n\n支持解析的平台：网易云、QQ音乐、酷狗、酷我、咪咕、Jamendo、JOOX、千千音乐、汽水音乐、Apple Music。\n\n## 常见问题\n\n### 桌面应用相关\n\n**Q: 桌面应用打不开或显示空白？**\n检查是否已安装 WebView2 运行时。从 [Microsoft官网](https:\u002F\u002Fdeveloper.microsoft.com\u002Fmicrosoft-edge\u002Fwebview2\u002F) 下载安装最新版本。\n\n**Q: 桌面应用启动慢或卡顿？**\n首次运行需要下载 WebView2 运行时。也可提前安装 Evergreen Bootstrapper 版本。\n\n**Q: 桌面应用启动时提示\"另一个程序正在使用此文件\"？**\n这是因为上一次运行的后台进程没有正常退出。解决方案：\n\n```powershell\n# 强制结束残留进程\ntaskkill \u002FF \u002FIM music-dl.exe\n\n```\n\n**Q: 如何构建桌面应用？**\n\n构建 Rust 桌面应用\n\n```bash\n# 1. 构建 Go 二进制\ngo build -o desktop\u002Fmusic-dl.exe cmd\u002Fmusic-dl\u002Fmain.go\n\n# 2. 构建 Rust 桌面应用\ncd desktop\ncargo build --release\n\n```\n\n构建纯 Go 的桌面应用\n\n```\ncd desktop\n\n# Windows \ngo build -ldflags=\"-H windowsgui\"\n\n# Linux \ngo build\n\n```\n\n**Q: 桌面应用支持哪些平台？**\n目前支持 Windows (x64\u002Fx86\u002Farm64)、macOS (x64\u002Farm64)、Linux (x64)。\n\n### 通用问题\n\n**Q: 有些歌搜不到或下载失败？**\n可能是付费限制、平台接口变更或网络问题。\n\n**Q: Web 模式打不开？**\n检查端口是否占用，或浏览器插件是否拦截。\n\n**Q: 如何设置 Cookie 获取更高音质？**\nWeb 右上角“设置”里可添加平台 Cookie。网易云音乐、QQ 音乐、酷狗音乐、Bilibili 支持点击输入框右侧的“扫码”按钮登录，扫码成功后会自动保存 Cookie。汽水音乐新版扫码登录暂未调通，入口已临时隐藏，请先手动配置 Cookie。\n\n**Q: 如何查看歌单分类和我的歌单？**\nWeb 首页歌单入口旁提供“歌单分类”和“我的歌单”。歌单分类可直接浏览支持平台的官方分类；我的歌单需要先配置对应平台 Cookie，目前支持网易云音乐、QQ 音乐、酷狗音乐和汽水音乐。\n\n**Q: 开启“内嵌元数据”后没生效？**\n先确认系统已安装 FFmpeg 且 `ffmpeg -version` 可执行；若不可用，程序会降级为原始音频下载（不内嵌封面\u002F歌词）。\n\n## 项目结构\n\n```text\ngo-music-dl\u002F\n├── cmd\u002F\n│   └── music-dl\u002F          # CLI\u002FTUI 主程序\n├── core\u002F                  # 核心业务逻辑\n├── internal\u002F\n│   ├── cli\u002F               # TUI 界面 (如: ui.go)\n│   └── web\u002F               # 重构后的 Web 后端服务\n│       ├── templates\u002F     # 前端模板与静态资源分离\n│       ├── server.go      # Web 服务主入口\n│       ├── music.go       # 音乐搜索与解析路由\n│       ├── collection.go  # 本地自制歌单接口 (GORM)\n│       ├── local_music.go # 本地音乐扫描、上传、封面\u002F歌词与删除接口\n│       └── videogen.go    # 视频生成后端支持\n├── desktop\u002F               # 桌面应用 (Rust + Tao\u002FWry)\n├── desktop_go\u002F            # 桌面应用 (Go + webview2 )\n├── desktop_app\u002F           # 移动应用 (Go + Gio )\n├── data\u002F                  # 🌟 统一数据持久化目录 (Docker挂载点)\n│   ├── downloads\u002F         # 下载的音乐文件\n│   ├── video_output\u002F      # 生成的视频文件\n│   ├── cookies.json       # Cookie 配置文件\n│   └── settings.db        # 统一 SQLite 数据库（设置 \u002F Cookie \u002F 自制歌单）\n├── .github\u002Fworkflows\u002F     # GitHub Actions 工作流\n├── screenshots\u002F           # 截图资源\n├── docker-compose.yml     # Docker 生产环境配置 (直接拉取镜像)\n├── docker-compose.dev.yml # Docker 开发环境配置 (本地构建)\n├── Dockerfile             # Docker 构建配置\n├── go.mod                 # Go 模块配置\n├── README.md              # 主项目说明\n├── package.bat            # 构建Rust桌面程序脚本\n├── package_go.bat         # 构建Go桌面程序脚本\n├── package_app.bat        # 构建Android移动应用脚本\n├── package_ios.bat        # 构建IOS移动应用脚本\n├── run.bat                # Go Music DL - 启动脚本 (Windows)\n└── run.sh                 # Go Music DL - 启动脚本 (Linux\u002FmacOS)\n```\n\n## 技术栈\n\n* **核心库**: [music-lib](https:\u002F\u002Fgithub.com\u002Fguohuiyuan\u002Fmusic-lib) - 音乐平台搜索下载\n* **CLI 框架**: [Cobra](https:\u002F\u002Fgithub.com\u002Fspf13\u002Fcobra) - 命令行工具\n* **Web 框架**: [Gin](https:\u002F\u002Fgithub.com\u002Fgin-gonic\u002Fgin) - Web 框架\n* **TUI 框架**: [Bubble Tea](https:\u002F\u002Fgithub.com\u002Fcharmbracelet\u002Fbubbletea) - 终端界面\n* **桌面框架**: [Tao](https:\u002F\u002Fgithub.com\u002Ftauri-apps\u002Ftao) + [Wry](https:\u002F\u002Fgithub.com\u002Ftauri-apps\u002Fwry) - 跨平台桌面应用\n* **图像处理**: [image](https:\u002F\u002Fgithub.com\u002Fimage-rs\u002Fimage) - 图标处理\n\n### 桌面应用架构\n\n桌面应用采用前后端分离架构：\n\n* **前端**: Rust + Tao\u002FWry - 负责窗口管理、WebView 渲染和进程管理\n* **后端**: Go 二进制 - 嵌入到桌面应用中，提供 Web 服务和音乐功能\n* **通信**: HTTP 本地服务 - 前后端通过 `http:\u002F\u002Flocalhost:37777` 通信\n\n详细说明请参考 [desktop\u002FREADME.md](desktop\u002FREADME.md)\n\n## 贡献\n\n欢迎提交 Issue 或 Pull Request。\n\n## 许可证\n\n本项目遵循 GNU Affero General Public License v3.0（AGPL-3.0）。详情见 [LICENSE](LICENSE)。\n\n## 致敬\n\n感谢以下优秀的开源项目：\n\n* **下载库**: [0xHJK\u002Fmusic-dl](https:\u002F\u002Fgithub.com\u002F0xHJK\u002Fmusic-dl) - 音乐下载库\n* **下载库**: [CharlesPikachu\u002Fmusicdl](https:\u002F\u002Fgithub.com\u002FCharlesPikachu\u002Fmusicdl) - 音乐下载库\n* **接口设计参考**: [metowolf\u002FMeting](https:\u002F\u002Fgithub.com\u002Fmetowolf\u002FMeting) - 多平台音乐聚合与接口封装\n* **无损音乐**: [Suxiaoqinx\u002FNetease_url](https:\u002F\u002Fgithub.com\u002FSuxiaoqinx\u002FNetease_url) - 网易云音乐 FLAC 无损音乐解析\n* **QQ 音乐**: [Suxiaoqinx\u002Fqqmusic_flac](https:\u002F\u002Fgithub.com\u002FSuxiaoqinx\u002Fqqmusic_flac) - QQ 音乐 FLAC 解析\n* **逐字歌词展示参考**: [chenmozhijin\u002FLDDC](https:\u002F\u002Fgithub.com\u002Fchenmozhijin\u002FLDDC) - 原文 \u002F 译文 \u002F 罗马音逐字歌词的组织与展示思路参考\n\n## 免责声明\n\n仅供学习和技术交流使用。下载的音乐资源请在 24 小时内删除。\n\n## Star History\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fimage?repos=guohuiyuan\u002Fgo-music-dl&type=date&legend=top-left)](https:\u002F\u002Fwww.star-history.com\u002F?repos=guohuiyuan%2Fgo-music-dl&type=date&legend=top-left)\n","Go Music DL 是一个基于 Go 语言的全网音乐搜索与下载工具，支持 CLI 命令行与 Web 服务双模式。该项目内置了包括网易云、QQ 音乐、酷狗、Bilibili 和汽水音乐在内的 10 多个主流音乐平台，具备多源并发搜索和无损音质解析的核心功能。它提供了 Web 界面、TUI 终端及桌面应用三种使用方式，用户不仅能够进行单曲搜索与下载，还能处理歌单、专辑等复杂需求，并支持试听、歌词和封面下载。此外，Go Music DL 还允许用户创建本地收藏夹来管理喜爱的歌曲。这款工具非常适合需要跨平台管理和下载音乐资源的用户，无论是个人用户还是开发者都能从中受益。",2,"2026-06-11 03:50:10","high_star"]