Skip to content

Repository files navigation

MusicAPI - 网易云音乐 API 服务

基于 Flask 的网易云音乐 API 代理服务,提供歌曲搜索、解析、下载、歌单/专辑详情等功能,附带用户系统、API Key 管理、后台统计面板。

功能特性

  • 歌曲信息获取(URL、歌词、详情)
  • 音乐搜索
  • 歌单 / 专辑详情解析
  • 音乐下载(支持多音质)
  • 音频流代理(解决跨域播放)
  • 用户注册 / 登录系统
  • API Key 管理(创建、启用/禁用、重置)
  • 管理后台(调用统计、用户管理、公告管理、健康监控)
  • 健康监控 + 邮件通知
  • 代理池支持
  • 兼容旧版 api.php 格式(Scratch 扩展)

技术栈

  • Python 3.6+
  • Flask
  • MySQL / MariaDB
  • AES 加密(网易云 eapi 接口)
  • WebSocket(KukeChat Bot)

快速开始

1. 克隆项目

git clone https://github.com/your-username/MusicAPI.git
cd MusicAPI

2. 安装依赖

pip install -r requirements.txt

3. 配置环境变量

复制 .env.example.env 并填入实际配置:

cp .env.example .env

编辑 .env 文件,必须填写以下配置:

变量 说明
DB_HOST 数据库地址
DB_USER 数据库用户名
DB_PASSWORD 数据库密码
DB_NAME 数据库名称
SECRET_KEY Flask 密钥(随机字符串)
ADMIN_PASSWORD 管理后台登录密码

4. 初始化数据库

CREATE DATABASE IF NOT EXISTS musicapi DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;

USE musicapi;

CREATE TABLE IF NOT EXISTS api_logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    endpoint VARCHAR(500) NOT NULL,
    method VARCHAR(10) NOT NULL,
    ip_address VARCHAR(45) NOT NULL,
    user_agent TEXT,
    status_code INT DEFAULT 200,
    user_id INT NULL,
    api_key_id INT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_created_at (created_at),
    INDEX idx_endpoint (endpoint(255)),
    INDEX idx_user_id (user_id),
    INDEX idx_api_key_id (api_key_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS daily_stats (
    stat_date DATE PRIMARY KEY,
    total_calls INT DEFAULT 0,
    unique_visitors INT DEFAULT 0,
    downloads INT DEFAULT 0,
    searches INT DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

启动时 db_helper.py 会自动创建 usersapi_keysannouncementshealth_checkshealth_subscribers 表。

5. 配置网易云 Cookie

将你的网易云音乐 Cookie 写入 cookie.txt 文件(一行字符串格式):

MUSIC_U=xxx; __csrf=xxx; os=pc; appver=8.9.70;

可通过 cookie_manager.py 扫码登录获取 Cookie。

6. 启动服务

python main.py

服务默认监听 http://0.0.0.0:5000

使用 Gunicorn(生产环境推荐)

pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 main:app

使用 systemd 守护进程

# /etc/systemd/system/musicapi.service
[Unit]
Description=MusicAPI Service
After=network.target

[Service]
Type=simple
User=www
WorkingDirectory=/path/to/MusicAPI
EnvironmentFile=/path/to/MusicAPI/.env
ExecStart=/usr/bin/python3 /path/to/MusicAPI/main.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now musicapi

项目结构

MusicAPI/
├── main.py                 # Flask 主应用(路由、认证、中间件)
├── config.py               # 配置管理(从环境变量读取)
├── db_helper.py            # 数据库操作层
├── music_api.py            # 网易云 API 封装(加密、请求)
├── music_downloader.py     # 音乐下载器(标签写入、多格式)
├── cookie_manager.py       # Cookie 管理(读写、验证、扫描登录)
├── kukebot.py              # KukeChat 聊天机器人(可选)
├── requirements.txt        # Python 依赖
├── .env.example            # 环境变量模板
├── .gitignore
├── cookie.txt              # 网易云 Cookie(需自行配置)
├── API.md                  # API 接口文档
├── templates/              # Jinja2 模板
│   ├── index.html          # 首页
│   ├── docs.html           # API 在线文档
│   ├── user_home.html      # 用户平台首页
│   ├── user_dashboard.html # 用户控制台
│   ├── admin_login.html    # 管理后台登录
│   ├── admin_dashboard.html# 管理后台仪表盘
│   └── health_monitor.html # 健康监控页面
└── downloads/              # 音乐下载目录(gitignore)

API 接口

详见 API.md

主要接口

路径 方法 说明 认证
/ GET 首页
/health GET 健康检查
/song GET/POST 歌曲信息 API Key
/search GET/POST 音乐搜索 API Key
/playlist GET/POST 歌单详情 API Key
/album GET/POST 专辑详情 API Key
/download GET/POST 音乐下载 API Key
/stream GET/POST 音频流代理 API Key
/api/stats GET 公开统计 API Key
/api/info GET API 信息 API Key
/user/register POST 用户注册
/user/login POST 用户登录
/user/me GET 当前用户信息 Session
/user/stats GET 用户统计 Session
/user/keys GET 用户 API Keys Session
/admin GET 管理后台 密码

API Key 认证方式

所有 API 接口均需携带 API Key,支持两种方式:

# 方式 1:Authorization 请求头(推荐)
curl -H "Authorization: Bearer YOUR_API_KEY" https://your-domain/song?id=185668

# 方式 2:URL 参数
curl "https://your-domain/song?id=185668&api_key=YOUR_API_KEY"

管理后台

访问 /admin,输入管理员密码登录后可查看:

  • 总体调用统计
  • 每日 / 每小时趋势
  • 接口分布排行
  • 用户管理
  • API Key 管理
  • 公告管理
  • 健康监控

用户平台

访问 /user,注册登录后可:

  • 管理个人 API Keys(创建、启用/禁用、重置、删除)
  • 查看个人调用统计(总调用、今日调用、端点详情)
  • 每日调用趋势图

健康监控

  • 每 15 分钟自动检测服务健康状态
  • 状态变化时通过邮件通知订阅者
  • 访问 /health/monitor 查看监控面板

注意事项

  1. Cookie 有效期:网易云 Cookie 有时效性,失效后需重新获取
  2. 音质限制:高音质(lossless/hires)需要黑胶 VIP 账号 Cookie
  3. 版权限制:部分歌曲可能因版权原因无法获取播放链接
  4. 请求频率:建议控制请求频率,避免触发网易云反爬机制

License

MIT

About

网易云音乐API服务 - 歌曲搜索、解析、下载、歌单/专辑详情

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages