pymelodia


Namepymelodia JSON
Version 1.1.1 PyPI version JSON
download
home_pagehttps://github.com/yht0511/melodia
Summary🎵 网易云音乐下载工具
upload_time2025-08-02 07:45:08
maintainerNone
docs_urlNone
authoryht0511
requires_python>=3.7
licenseMIT
keywords music download netease 网易云 音乐下载 命令行工具
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 🎵 Melodia

> 网易云音乐下载工具

[![PyPI version](https://badge.fury.io/py/pymelodia.svg)](https://badge.fury.io/py/pymelodia)
[![Python 3.7+](https://img.shields.io/badge/python-3.7+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

## 🚀 快速开始

### 安装

```bash
pip install pymelodia
```

### 基本使用

```bash
# 下载单首歌曲
melodia download song 390345

# 下载歌单
melodia download playlist 123456

# 下载指定分类的音乐
melodia download category 华语

# 下载所有分类
melodia download all

# 获取下载链接
melodia get link 390345

# 清理重复文件
melodia clean /path/to/music
```

## 📖 详细使用

### 下载命令

```bash
# 单曲下载
melodia download song 390345

# 批量下载多首歌曲
melodia download song "['390345', '123456', '789012']"

# 歌单下载
melodia download playlist 2829883282

# 批量下载多个歌单
melodia download playlist "['2829883282', '3779629']"

# 分类下载(支持华语、欧美、日语等)
melodia download category 华语

# 下载所有支持的分类
melodia download all
```

### 配置选项

```bash
# 设置保存路径
melodia --save-path /path/to/music download song 390345

# 设置请求延时(避免频率限制)
melodia --delay 1 download category 华语

# 设置最大页数
melodia --max-pages 50 download all

# 设置用户Cookie(提升成功率)
melodia --cookie "your_cookie_here" download playlist 123456

# 启用多线程下载(默认开启,4个线程)
melodia --threading --thread-count 8 download playlist 123456

# 禁用多线程下载(单线程模式)
melodia --no-threading download playlist 123456

# 设置临时文件目录
melodia --temp-dir /tmp/melodia download category 华语
```

### 支持的音乐分类

**语言分类**:华语、欧美、日语、韩语、粤语

**风格分类**:流行、摇滚、民谣、电子、舞曲、说唱、轻音乐、爵士、乡村

**场景分类**:清晨、夜晚、学习、工作、午休、下午茶、地铁、驾车

**情感分类**:怀旧、清新、浪漫、伤感、治愈、放松、孤独、感动

**主题分类**:综艺、影视原声、ACG、儿童、校园、游戏、经典

## 🎯 界面预览

```
🎵 Melodia 🎵
════════════════════════════════════════════════════════════════

批量下载(12首)            [████████████░░░░░░░░░░] 60.0% (7/12)
线程状态                  [██████████████████░░] 90.0% (9/10)
歌单列表                  [████████████████████] 100.0% (8/8)

📝 实时日志
────────────────────────────────────────────────────────────────
[14:32:15] [INFO] ℹ️ 启用多线程下载,线程数: 4
[14:32:15] [INFO] ℹ️ 开始下载歌曲 ID: 390345
[14:32:16] [SUCCESS] ✅ [线程-1] 成功下载: 周杰伦 - 晴天
[14:32:16] [SUCCESS] ✅ [线程-2] 成功下载: 林俊杰 - 江南
[14:32:17] [INFO] ℹ️ 正在处理歌单...
```

## ⚙️ 高级配置

### 配置文件

程序会在用户目录下创建配置文件 `~/.melodia/config.json`:

```json
{
  "save_path": "./music/",
  "delay": 0,
  "max_pages": 20,
  "cookie": "",
  "music_class": "全部",
  "temp_path": "./temp.mp3",
  "temp_dir": "./temp/",
  "hashed_storage_enabled": false,
  "hashed_storage_digit": 30,
  "threading_enabled": true,
  "thread_count": 4
}
```

### 环境变量

```bash
export MD_SAVE_PATH=./music/
export MD_TEMP_PATH=./temp.mp3
export MD_TEMP_DIR=./temp/
export MD_CLASS=华语
export MD_DELAY=0
export MD_COOKIE=""
export MD_MAX_PAGES=20
export MD_HASHED_STORAGE=false
export MD_HASHED_STORAGE_DIGIT=30
export MD_THREADING_ENABLED=true
export MD_THREAD_COUNT=4
```

### 配置管理命令

```bash
# 显示当前配置信息
melodia config show
melodia get config

# 保存配置到文件
melodia config save --hashed-storage --hashed-storage-digit 30

# 保存多线程配置
melodia config save --threading --thread-count 8 --temp-dir ./temp/

# 禁用多线程并保存
melodia config save --no-threading
```

### 参数优先级

命令行参数 > 环境变量 > 配置文件 > 默认值

## 🛠️ 开发

### 本地开发

```bash
git clone https://github.com/yht0511/MusicSpider.git
cd MusicSpider
pip install -e .
```

## 📄 许可证

本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。

## ⚠️ 免责声明

本工具仅供学习和研究使用,请勿用于商业用途。下载的音乐文件请在24小时内删除,如需长期使用请购买正版音乐。


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/yht0511/melodia",
    "name": "pymelodia",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "music, download, netease, \u7f51\u6613\u4e91, \u97f3\u4e50\u4e0b\u8f7d, \u547d\u4ee4\u884c\u5de5\u5177",
    "author": "yht0511",
    "author_email": "yht0511 <admin@teclab.org.cn>",
    "download_url": "https://files.pythonhosted.org/packages/3f/e2/6349ce9e58ea6d73f0bfcafd31e48d7ccd8d29882dc325b5a8d25635ee49/pymelodia-1.1.1.tar.gz",
    "platform": null,
    "description": "# \ud83c\udfb5 Melodia\r\n\r\n> \u7f51\u6613\u4e91\u97f3\u4e50\u4e0b\u8f7d\u5de5\u5177\r\n\r\n[![PyPI version](https://badge.fury.io/py/pymelodia.svg)](https://badge.fury.io/py/pymelodia)\r\n[![Python 3.7+](https://img.shields.io/badge/python-3.7+-blue.svg)](https://www.python.org/downloads/)\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\r\n\r\n## \ud83d\ude80 \u5feb\u901f\u5f00\u59cb\r\n\r\n### \u5b89\u88c5\r\n\r\n```bash\r\npip install pymelodia\r\n```\r\n\r\n### \u57fa\u672c\u4f7f\u7528\r\n\r\n```bash\r\n# \u4e0b\u8f7d\u5355\u9996\u6b4c\u66f2\r\nmelodia download song 390345\r\n\r\n# \u4e0b\u8f7d\u6b4c\u5355\r\nmelodia download playlist 123456\r\n\r\n# \u4e0b\u8f7d\u6307\u5b9a\u5206\u7c7b\u7684\u97f3\u4e50\r\nmelodia download category \u534e\u8bed\r\n\r\n# \u4e0b\u8f7d\u6240\u6709\u5206\u7c7b\r\nmelodia download all\r\n\r\n# \u83b7\u53d6\u4e0b\u8f7d\u94fe\u63a5\r\nmelodia get link 390345\r\n\r\n# \u6e05\u7406\u91cd\u590d\u6587\u4ef6\r\nmelodia clean /path/to/music\r\n```\r\n\r\n## \ud83d\udcd6 \u8be6\u7ec6\u4f7f\u7528\r\n\r\n### \u4e0b\u8f7d\u547d\u4ee4\r\n\r\n```bash\r\n# \u5355\u66f2\u4e0b\u8f7d\r\nmelodia download song 390345\r\n\r\n# \u6279\u91cf\u4e0b\u8f7d\u591a\u9996\u6b4c\u66f2\r\nmelodia download song \"['390345', '123456', '789012']\"\r\n\r\n# \u6b4c\u5355\u4e0b\u8f7d\r\nmelodia download playlist 2829883282\r\n\r\n# \u6279\u91cf\u4e0b\u8f7d\u591a\u4e2a\u6b4c\u5355\r\nmelodia download playlist \"['2829883282', '3779629']\"\r\n\r\n# \u5206\u7c7b\u4e0b\u8f7d\uff08\u652f\u6301\u534e\u8bed\u3001\u6b27\u7f8e\u3001\u65e5\u8bed\u7b49\uff09\r\nmelodia download category \u534e\u8bed\r\n\r\n# \u4e0b\u8f7d\u6240\u6709\u652f\u6301\u7684\u5206\u7c7b\r\nmelodia download all\r\n```\r\n\r\n### \u914d\u7f6e\u9009\u9879\r\n\r\n```bash\r\n# \u8bbe\u7f6e\u4fdd\u5b58\u8def\u5f84\r\nmelodia --save-path /path/to/music download song 390345\r\n\r\n# \u8bbe\u7f6e\u8bf7\u6c42\u5ef6\u65f6\uff08\u907f\u514d\u9891\u7387\u9650\u5236\uff09\r\nmelodia --delay 1 download category \u534e\u8bed\r\n\r\n# \u8bbe\u7f6e\u6700\u5927\u9875\u6570\r\nmelodia --max-pages 50 download all\r\n\r\n# \u8bbe\u7f6e\u7528\u6237Cookie\uff08\u63d0\u5347\u6210\u529f\u7387\uff09\r\nmelodia --cookie \"your_cookie_here\" download playlist 123456\r\n\r\n# \u542f\u7528\u591a\u7ebf\u7a0b\u4e0b\u8f7d\uff08\u9ed8\u8ba4\u5f00\u542f\uff0c4\u4e2a\u7ebf\u7a0b\uff09\r\nmelodia --threading --thread-count 8 download playlist 123456\r\n\r\n# \u7981\u7528\u591a\u7ebf\u7a0b\u4e0b\u8f7d\uff08\u5355\u7ebf\u7a0b\u6a21\u5f0f\uff09\r\nmelodia --no-threading download playlist 123456\r\n\r\n# \u8bbe\u7f6e\u4e34\u65f6\u6587\u4ef6\u76ee\u5f55\r\nmelodia --temp-dir /tmp/melodia download category \u534e\u8bed\r\n```\r\n\r\n### \u652f\u6301\u7684\u97f3\u4e50\u5206\u7c7b\r\n\r\n**\u8bed\u8a00\u5206\u7c7b**\uff1a\u534e\u8bed\u3001\u6b27\u7f8e\u3001\u65e5\u8bed\u3001\u97e9\u8bed\u3001\u7ca4\u8bed\r\n\r\n**\u98ce\u683c\u5206\u7c7b**\uff1a\u6d41\u884c\u3001\u6447\u6eda\u3001\u6c11\u8c23\u3001\u7535\u5b50\u3001\u821e\u66f2\u3001\u8bf4\u5531\u3001\u8f7b\u97f3\u4e50\u3001\u7235\u58eb\u3001\u4e61\u6751\r\n\r\n**\u573a\u666f\u5206\u7c7b**\uff1a\u6e05\u6668\u3001\u591c\u665a\u3001\u5b66\u4e60\u3001\u5de5\u4f5c\u3001\u5348\u4f11\u3001\u4e0b\u5348\u8336\u3001\u5730\u94c1\u3001\u9a7e\u8f66\r\n\r\n**\u60c5\u611f\u5206\u7c7b**\uff1a\u6000\u65e7\u3001\u6e05\u65b0\u3001\u6d6a\u6f2b\u3001\u4f24\u611f\u3001\u6cbb\u6108\u3001\u653e\u677e\u3001\u5b64\u72ec\u3001\u611f\u52a8\r\n\r\n**\u4e3b\u9898\u5206\u7c7b**\uff1a\u7efc\u827a\u3001\u5f71\u89c6\u539f\u58f0\u3001ACG\u3001\u513f\u7ae5\u3001\u6821\u56ed\u3001\u6e38\u620f\u3001\u7ecf\u5178\r\n\r\n## \ud83c\udfaf \u754c\u9762\u9884\u89c8\r\n\r\n```\r\n\ud83c\udfb5 Melodia \ud83c\udfb5\r\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\r\n\u6279\u91cf\u4e0b\u8f7d(12\u9996)            [\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591] 60.0% (7/12)\r\n\u7ebf\u7a0b\u72b6\u6001                  [\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591] 90.0% (9/10)\r\n\u6b4c\u5355\u5217\u8868                  [\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588] 100.0% (8/8)\r\n\r\n\ud83d\udcdd \u5b9e\u65f6\u65e5\u5fd7\r\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n[14:32:15] [INFO] \u2139\ufe0f \u542f\u7528\u591a\u7ebf\u7a0b\u4e0b\u8f7d\uff0c\u7ebf\u7a0b\u6570: 4\r\n[14:32:15] [INFO] \u2139\ufe0f \u5f00\u59cb\u4e0b\u8f7d\u6b4c\u66f2 ID: 390345\r\n[14:32:16] [SUCCESS] \u2705 [\u7ebf\u7a0b-1] \u6210\u529f\u4e0b\u8f7d: \u5468\u6770\u4f26 - \u6674\u5929\r\n[14:32:16] [SUCCESS] \u2705 [\u7ebf\u7a0b-2] \u6210\u529f\u4e0b\u8f7d: \u6797\u4fca\u6770 - \u6c5f\u5357\r\n[14:32:17] [INFO] \u2139\ufe0f \u6b63\u5728\u5904\u7406\u6b4c\u5355...\r\n```\r\n\r\n## \u2699\ufe0f \u9ad8\u7ea7\u914d\u7f6e\r\n\r\n### \u914d\u7f6e\u6587\u4ef6\r\n\r\n\u7a0b\u5e8f\u4f1a\u5728\u7528\u6237\u76ee\u5f55\u4e0b\u521b\u5efa\u914d\u7f6e\u6587\u4ef6 `~/.melodia/config.json`\uff1a\r\n\r\n```json\r\n{\r\n  \"save_path\": \"./music/\",\r\n  \"delay\": 0,\r\n  \"max_pages\": 20,\r\n  \"cookie\": \"\",\r\n  \"music_class\": \"\u5168\u90e8\",\r\n  \"temp_path\": \"./temp.mp3\",\r\n  \"temp_dir\": \"./temp/\",\r\n  \"hashed_storage_enabled\": false,\r\n  \"hashed_storage_digit\": 30,\r\n  \"threading_enabled\": true,\r\n  \"thread_count\": 4\r\n}\r\n```\r\n\r\n### \u73af\u5883\u53d8\u91cf\r\n\r\n```bash\r\nexport MD_SAVE_PATH=./music/\r\nexport MD_TEMP_PATH=./temp.mp3\r\nexport MD_TEMP_DIR=./temp/\r\nexport MD_CLASS=\u534e\u8bed\r\nexport MD_DELAY=0\r\nexport MD_COOKIE=\"\"\r\nexport MD_MAX_PAGES=20\r\nexport MD_HASHED_STORAGE=false\r\nexport MD_HASHED_STORAGE_DIGIT=30\r\nexport MD_THREADING_ENABLED=true\r\nexport MD_THREAD_COUNT=4\r\n```\r\n\r\n### \u914d\u7f6e\u7ba1\u7406\u547d\u4ee4\r\n\r\n```bash\r\n# \u663e\u793a\u5f53\u524d\u914d\u7f6e\u4fe1\u606f\r\nmelodia config show\r\nmelodia get config\r\n\r\n# \u4fdd\u5b58\u914d\u7f6e\u5230\u6587\u4ef6\r\nmelodia config save --hashed-storage --hashed-storage-digit 30\r\n\r\n# \u4fdd\u5b58\u591a\u7ebf\u7a0b\u914d\u7f6e\r\nmelodia config save --threading --thread-count 8 --temp-dir ./temp/\r\n\r\n# \u7981\u7528\u591a\u7ebf\u7a0b\u5e76\u4fdd\u5b58\r\nmelodia config save --no-threading\r\n```\r\n\r\n### \u53c2\u6570\u4f18\u5148\u7ea7\r\n\r\n\u547d\u4ee4\u884c\u53c2\u6570 > \u73af\u5883\u53d8\u91cf > \u914d\u7f6e\u6587\u4ef6 > \u9ed8\u8ba4\u503c\r\n\r\n## \ud83d\udee0\ufe0f \u5f00\u53d1\r\n\r\n### \u672c\u5730\u5f00\u53d1\r\n\r\n```bash\r\ngit clone https://github.com/yht0511/MusicSpider.git\r\ncd MusicSpider\r\npip install -e .\r\n```\r\n\r\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\r\n\r\n\u672c\u9879\u76ee\u91c7\u7528 MIT \u8bb8\u53ef\u8bc1 - \u67e5\u770b [LICENSE](LICENSE) \u6587\u4ef6\u4e86\u89e3\u8be6\u60c5\u3002\r\n\r\n## \u26a0\ufe0f \u514d\u8d23\u58f0\u660e\r\n\r\n\u672c\u5de5\u5177\u4ec5\u4f9b\u5b66\u4e60\u548c\u7814\u7a76\u4f7f\u7528\uff0c\u8bf7\u52ff\u7528\u4e8e\u5546\u4e1a\u7528\u9014\u3002\u4e0b\u8f7d\u7684\u97f3\u4e50\u6587\u4ef6\u8bf7\u572824\u5c0f\u65f6\u5185\u5220\u9664\uff0c\u5982\u9700\u957f\u671f\u4f7f\u7528\u8bf7\u8d2d\u4e70\u6b63\u7248\u97f3\u4e50\u3002\r\n\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "\ud83c\udfb5 \u7f51\u6613\u4e91\u97f3\u4e50\u4e0b\u8f7d\u5de5\u5177",
    "version": "1.1.1",
    "project_urls": {
        "Bug Reports": "https://github.com/yht0511/melodia/issues",
        "Documentation": "https://github.com/yht0511/melodia/blob/main/README.md",
        "Homepage": "https://github.com/yht0511/melodia",
        "Source": "https://github.com/yht0511/melodia"
    },
    "split_keywords": [
        "music",
        " download",
        " netease",
        " \u7f51\u6613\u4e91",
        " \u97f3\u4e50\u4e0b\u8f7d",
        " \u547d\u4ee4\u884c\u5de5\u5177"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2518e1976008ac7ae469cfc1bf69b7a7a8d7c360d3d06f60be103988a9d0ec87",
                "md5": "f98f63f26c61dfeff66e4c3dce3d9478",
                "sha256": "3832e3ed510919904265abd1d899f5060f7da916e0bf363e520c872bdda03318"
            },
            "downloads": -1,
            "filename": "pymelodia-1.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f98f63f26c61dfeff66e4c3dce3d9478",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 37750,
            "upload_time": "2025-08-02T07:45:07",
            "upload_time_iso_8601": "2025-08-02T07:45:07.542924Z",
            "url": "https://files.pythonhosted.org/packages/25/18/e1976008ac7ae469cfc1bf69b7a7a8d7c360d3d06f60be103988a9d0ec87/pymelodia-1.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3fe26349ce9e58ea6d73f0bfcafd31e48d7ccd8d29882dc325b5a8d25635ee49",
                "md5": "424077c1517f0729991cd751a78defe3",
                "sha256": "2ee9cdc87782169f063af1b4c464e822938dbe206bc4e61165af94aff396006c"
            },
            "downloads": -1,
            "filename": "pymelodia-1.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "424077c1517f0729991cd751a78defe3",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 33953,
            "upload_time": "2025-08-02T07:45:08",
            "upload_time_iso_8601": "2025-08-02T07:45:08.876130Z",
            "url": "https://files.pythonhosted.org/packages/3f/e2/6349ce9e58ea6d73f0bfcafd31e48d7ccd8d29882dc325b5a8d25635ee49/pymelodia-1.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-02 07:45:08",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "yht0511",
    "github_project": "melodia",
    "github_not_found": true,
    "lcname": "pymelodia"
}
        
Elapsed time: 0.80256s