🎵 简单的网易云音乐 NCM 格式转换工具
将加密的 NCM 文件转换为 MP3/FLAC,保留元数据与封面。
| 功能 | 描述 |
|---|---|
| 🔓 NCM 解密 | 快速解密网易云音乐加密的 .ncm 文件 |
| 🔄 格式转换 | 支持转换为 MP3、FLAC 等通用音频格式 |
| 🏷️ 元数据保留 | 完整保留歌曲标题、艺术家、专辑名称等元数据信息 |
| 🖼️ 封面提取 | 自动提取并嵌入专辑封面图片 |
| 🖥️ 双模式支持 | 提供现代化的 图形界面 (GUI) 和高效的 命令行 (CLI) |
| 👁️ 预览功能 | 转换前查看文件详情,内置简易播放器预览转换后的音频 |
| 🖱️ 拖拽支持 | 支持直接拖拽文件到界面进行处理 |
| ⚡ 批量处理 | 支持多文件、文件夹递归扫描,批量处理,提升处理效率 |
- Python: 3.14
- 操作系统:
- Windows 7+ (支持 Qt6/PySide6)
该项目依赖以下库:
mutagen- 音频数据处理pillow- 图像处理pycryptodome- 核心解密算法pyside6- 现代化 GUI 界面pyinstaller- 可执行文件打包
# 克隆仓库
git clone https://github.com/your-username/NetEaseMusicConverter.git
cd NetEaseMusicConverter
# 安装依赖 (使用 uv 或 pip)
# 使用 uv (推荐)
uv sync
# 或使用 pip
pip install -r requirements.txt如果您希望生成无需 Python 环境即可运行的可执行文件:
# 使用配置文件 (推荐,包含完整资源配置,打包 GUI 版本)
pyinstaller NCM_Converter.spec
# 打包 GUI 版本
pyinstaller --onefile --windowed --icon=resources/NCMCicon.ico gui.py
# 打包 CLI 版本
pyinstaller --onefile cli.py打包完成后的文件将位于 dist/ 目录下。
下载 exe 文件后双击运行。
适合大多数用户,操作直观便捷。
python gui.py功能亮点:
- 📂 文件导入:点击按钮选择或直接拖拽 NCM 文件进入窗口。
- 🎵 预览播放:内置播放器可在导出后试听。
- 📊 状态监控:实时进度条显示转换状态。
- 📦 批量解析:一次处理多个文件。
适合开发者或需要批处理脚本的用户。
# 基础转换 (默认输出到同目录)
python cli.py input.ncm
# 指定输出路径
python cli.py input.ncm -o /path/to/music/output.mp3
# 仅预览信息 (不进行解密)
python cli.py input.ncm -p参数说明:
input.ncm: 输入文件路径-o, --output: (可选) 输出文件路径-p, --preview: (可选) 预览模式,仅读取元数据
NetEaseMusicConverter/
├── codec/ # 核心解码逻辑
│ └── ncm_codec.py # NCM 解密算法实现
├── controller/ # 控制器
│ ├── cli_controller.py
│ └── gui_controller.py
├── domain/ # 模型与异常定义
│ ├── exceptions.py
│ └── models.py
├── gui/ # UI 界面层
│ ├── main_window.py # 主窗口实现
│ ├── main_page.py # 主页面
│ ├── batch_page.py # 批处理页面
│ └── widgets.py # 自定义 UI 组件
├── session/ # 解密会话管理
│ └── decryption_session.py
├── resources/ # 静态资源
├── cli.py # CLI 程序入口
├── gui.py # GUI 程序入口
├── NCM_Converter.spec # PyInstaller 打包配置
├── version_info.txt # PyInstaller 文件版本信息
└── pyproject.toml # 依赖列表
[!IMPORTANT] 请务必阅读以下内容:
- 本项目仅供 个人学习研究 使用。
- 请严格遵守相关版权法律法规。
- 转换后的音频文件 仅限个人使用与备份,严禁用于任何商业用途。
- 使用本工具产生的任何法律后果由使用者自行承担。
ncm 文件解密算法参考自 anonymous5l 及 taurusxin/ncmdump 项目。
欢迎您的贡献!如果您发现 Bug 或有新功能建议,请提交 Issue 或 Pull Request。