back to home

guohuiyuan / go-music-dl

一个基于 Go 语言的全网音乐搜索与下载工具。支持 CLI 命令行与 Web 服务双模式,内置网易云、QQ、酷狗、Bilibili、汽水音乐等 10+ 个主流平台,支持多源并发搜索与无损音质解析。music-dl交流群:1074285005

View on GitHub
1,297 stars
108 forks
9 issues

AI Architecture Analysis

This repository is indexed by RepoMind. By analyzing guohuiyuan/go-music-dl in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.

Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.

Source files are only loaded when you start an analysis to optimize performance.

Embed this Badge

Showcase RepoMind's analysis directly in your repository's README.

[![Analyzed by RepoMind](https://img.shields.io/badge/Analyzed%20by-RepoMind-4F46E5?style=for-the-badge)](https://repomind.in/repo/guohuiyuan/go-music-dl)
Preview:Analyzed by RepoMind

Repository Overview (README excerpt)

Crawler view

Go Music DL Go Music DL 是一个音乐搜索与下载工具,支持 **Web 界面**、**TUI 终端** 和 **桌面应用** 三种使用模式。你可以在浏览器试听,也可以在终端里批量下载,或使用原生桌面应用享受最佳体验。 🚀 快速开始 桌面应用 (推荐) 最简单的使用方式,下载即用: • 从 Releases 下载 • 解压,双击运行 • 享受原生桌面体验! Web 模式 TUI 模式 --- 主要功能 • **多模式支持**: Web 界面、TUI 终端、桌面应用 • **本地自制歌单**: 支持新建本地收藏夹,随时收藏、管理心仪歌曲,数据持久化不丢失 • **无损音乐支持**: 支持网易云、QQ 音乐、Bilibili 的 FLAC 无损音乐下载 • 多平台聚合搜索与歌单搜索 • 试听、歌词、封面下载 • Range 探测:显示大小与码率 • 汽水音乐等加密音频解密 • 过滤需要付费的资源 • **桌面应用特性**: 原生窗口、自动服务启动、智能缓存管理 Web 下载模式与 FFmpeg Web 端“设置”里新增了 **下载时内嵌元数据(封面/歌词)** 开关: • **默认关闭(推荐)**:走流式下载,速度更快,并支持 断点/拖动播放。 • **开启后**:下载时会尝试把封面、歌词写入音频文件(embed)。 > ⚠️ 开启内嵌元数据依赖 **FFmpeg**。未安装 FFmpeg 时,会自动跳过内嵌并返回原始音频。 可先验证 FFmpeg 是否可用: 常见安装方式: • Windows: • macOS: • Ubuntu/Debian: 新增改动(简要) • **Web 架构全面重构**:前端代码彻底模块化(拆分独立的 JS / CSS / HTML 模板),后端路由按业务域拆分(音乐查询、歌单管理、视频生成),大幅提升代码可维护性。 • **新增自制歌单功能**:Web 端支持本地收藏夹,用户可自由创建、编辑歌单,将不同平台的歌曲聚合收藏。 • Web 试听按钮支持播放/停止切换,底部增加全局播放与音量控制栏。 • Web 单曲支持“换源”,按相似度优先、时长接近、可播放验证。 • 换源自动排除 soda 与 fivesing。 • TUI 增加 r 键批量换源,并显示换源进度。 • 增加“每日歌单推荐”,Web 和 TUI 都能看。 • Web 端支持批量操作:全选、选择无效、批量下载、批量换源。 快速开始 桌面应用模式 桌面应用提供了原生窗口体验,无需打开浏览器即可使用。 特性 • 🖥️ 原生桌面窗口,无需浏览器 • 🚀 自动启动内置Web服务器 • 🎵 完整Web界面功能 • 📦 单文件分发,绿色免安装 • 🖼️ 自定义窗口图标 • 🔒 使用罕见端口(37777),避免端口冲突 Docker 部署 本项目提供了多种 Docker 部署方式。当前默认通过 目录挂载到容器内 ,下载文件、配置与收藏数据都会持久化到该目录。 • 生产环境部署(推荐) 项目包含 文件,直接拉取云端预编译镜像,无需在本地构建: 浏览器访问 。 **说明:** • 自动拉取 镜像 • 支持后台运行和自动重启 • 默认使用 本地目录做数据持久化,便于直接查看和备份 • 设置时区为亚洲上海 • 以非root用户(uid=1000)运行,提高安全性 • 开发环境部署(本地构建) 如果您修改了源码,希望在本地通过 Docker 重新构建并测试效果,请使用 : • 纯命令行模式 (docker run) 如果不使用 Compose,也可以直接通过命令行运行: *提示:首次运行前可先创建 目录(如 ),便于宿主机直接访问下载与配置数据。* CLI/TUI 模式 TUI 常用按键: • 移动 • 选择 • 全选/清空 • 对勾选项换源 • 下载 • 返回 • 每日推荐歌单 • 退出 更多用法: GitHub Actions 自动构建 本项目已配置 GitHub Actions 工作流。当推送代码并打上版本标签(如 )时,会自动触发 ,构建跨平台镜像(支持 amd64 和 arm64)并推送到 DockerHub。 **如果你 Fork 了本仓库并希望使用自己的构建流:** • 在你的仓库 **Settings** -> **Secrets and variables** -> **Actions** 中添加: • : 你的 DockerHub 用户名 • : 你的 DockerHub 访问令牌 • 将 中的镜像地址修改为你自己的: Web 换源说明 单曲卡片里的“换源”会在其它平台里找更像的版本: • 先看歌名/歌手相似度 • 再看时长差异(太大就跳过) • 最后做可播放探测 当前会跳过 soda 与 fivesing。 每日歌单推荐 Web 页面有“每日推荐”入口,会聚合网易云、QQ、酷狗、酷我。 TUI 在输入界面按 直接拉取推荐歌单,然后回车进详情。 支持平台 | 平台 | 包名 | 搜索 | 下载 | 歌词 | 歌曲解析 | 歌单搜索 | 歌单推荐 | 歌单歌曲 | 歌单链接解析 | 备注 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | 网易云音乐 | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 支持 FLAC 无损 | | QQ 音乐 | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 支持 FLAC 无损 | | 酷狗音乐 | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 支持普通歌曲 FLAC 无损 | | 酷我音乐 | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | | 咪咕音乐 | | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | | | 千千音乐 | | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | | | 汽水音乐 | | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | 音频解密 | | 5sing | | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | | | Jamendo | | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | | | JOOX | | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | | | Bilibili | | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | 支持 FLAC 无损 | 歌曲链接解析 支持直接解析音乐分享链接: 支持解析的平台:网易云、QQ音乐、酷狗、酷我、咪咕、Bilibili、汽水音乐、5sing、Jamendo。 歌单链接解析 支持直接解析歌单/合集分享链接: 支持解析的平台:网易云、QQ音乐、酷狗、酷我、汽水音乐、5sing、Bilibili。 常见问题 桌面应用相关 **Q: 桌面应用打不开或显示空白?** 检查是否已安装 WebView2 运行时。从 Microsoft官网 下载安装最新版本。 **Q: 桌面应用启动慢或卡顿?** 首次运行需要下载 WebView2 运行时。也可提前安装 Evergreen Bootstrapper 版本。 **Q: 桌面应用启动时提示"另一个程序正在使用此文件"?** 这是因为上一次运行的后台进程没有正常退出。解决方案: **Q: 如何构建桌面应用?** **Q: 桌面应用支持哪些平台?** 目前支持 Windows (x64/x86/arm64)、macOS (x64/arm64)、Linux (x64)。 通用问题 **Q: 有些歌搜不到或下载失败?** 可能是付费限制、平台接口变更或网络问题。 **Q: Web 模式打不开?** 检查端口是否占用,或浏览器插件是否拦截。 **Q: 如何设置 Cookie 获取更高音质?** Web 右上角“设置”里可添加平台 Cookie。 **Q: 开启“内嵌元数据”后没生效?** 先确认系统已安装 FFmpeg 且 可执行;若不可用,程序会降级为原始音频下载(不内嵌封面/歌词)。 项目结构 技术栈 • **核心库**: music-lib - 音乐平台搜索下载 • **CLI 框架**: Cobra - 命令行工具 • **Web 框架**: Gin - Web 框架 • **TUI 框架**: Bubble Tea - 终端界面 • **桌面框架**: Tao + Wry - 跨平台桌面应用 • **图像处理**: image - 图标处理 桌面应用架构 桌面应用采用前后端分离架构: • **前端**: Rust + Tao/Wry - 负责窗口管理、WebView 渲染和进程管理 • **后端**: Go 二进制 - 嵌入到桌面应用中,提供 Web 服务和音乐功能 • **通信**: HTTP 本地服务 - 前后端通过 通信 详细说明请参考 desktop/README.md 贡献 欢迎提交 Issue 或 Pull Request。 许可证 本项目遵循 GNU Affero General Public License v3.0(AGPL-3.0)。详情见 LICENSE。 致敬 感谢以下优秀的开源项目: • **下载库**: 0xHJK/music-dl - 音乐下载库 • **下载库**: CharlesPikachu/musicdl - 音乐下载库 • **接口设计参考**: metowolf/Meting - 多平台音乐聚合与接口封装 • **无损音乐**: Suxiaoqinx/Netease_url - 网易云音乐 FLAC 无损音乐解析 • **QQ 音乐**: Suxiaoqinx/qqmusic_flac - QQ 音乐 FLAC 解析 免责声明 仅供学习和技术交流使用。下载的音乐资源请在 24 小时内删除。 Star History