MusicLibrary

March 10, 2026 · View on GitHub

KuGouMusicApi项目的 C 语言包装库,使用quilkjs-ng引擎调用 Javascript。

补充:目前已集成网易云和酷狗两家的接口

python语言,dart语言绑定在NeteaseCloudMusic_PythonSDK

功能概述

MusicLibrary 提供了一个 C 语言接口,用于调用 KuGouMusicApi、NeteaseCloudMusicApi 的功能。通过 QuickJS 引擎,开发者可以轻松地在 C 程序中运行 JavaScript 代码,完成诸如歌单管理、音乐搜索、推荐等功能。

免责声明

  1. 本项目仅供学习使用,请尊重版权,请勿利用此项目从事商业行为及非法用途!
  2. 使用本项目的过程中可能会产生版权数据。对于这些版权数据,本项目不拥有它们的所有权。为了避免侵权,使用者务必在 24 小时内清除使用本项目的过程中所产 生的版权数据。
  3. 由于使用本项目产生的包括由于本协议或由于使用或无法使用本项目而引起的任何性质的任何直接、间接、特殊、偶然或结果性损害(包括但不限于因商誉损失、停 工、计算机故障或故障引起的损害赔偿,或任何及所有其他商业损害或损失)由使用者负责。
  4. 禁止在违反当地法律法规的情况下使用本项目。 对于使用者在明知或不知当地法律法规不允许的情况下使用本项目所造成的任何违法违规行为由使用者承担,本 项目不承担由此造成的任何直接、间接、特殊、偶然或结果性责任。
  5. 音乐平台不易,请尊重版权,支持正版。
  6. 本项目仅用于对技术可行性的探索及研究,不接受任何商业(包括但不限于广告等)合作及捐赠。
  7. 如果官方音乐平台觉得本项目不妥,可联系本项目更改或移除。

使用说明

关键方法介绍

注意: 使用库时至少需要包含 engine.h;如果需要调用酷狗相关接口,则额外包含 kugou_music_api.h。同时确保 JSContext 不能跨线程使用。如果需要多线程支持,请为每个线程创建独立的 JSContext

方法原型说明
int init_engine();初始化 音乐引擎(进程级,全局一次)
int destroy_engine();销毁 音乐引擎,释放全局资源
JSContext *kugou_init(KugouProcessEnv *env);初始化酷狗 API 上下文
JSContext *kugou_init_simple();使用默认配置初始化酷狗 API 上下文
KugouAPI *create_kugou_api();创建并返回酷狗 API 操作对象,包含所有可调用的音乐接口方法封装
int kugou_destroy();销毁酷狗 API 相关全局资源
JSContext *get_kugou_context();创建/获取一个新的酷狗 JS 上下文
JSContext *ncm_init(NcmProcessEnv *env);初始化 网易云 API 上下文
NCMAPI *create_ncm_api();创建并返回 网易云 API 操作对象,包含所有可调用的音乐接口方法封装
int ncm_destroy();销毁 网易云 API 相关全局资源
JSContext *get_ncm_context();创建/获取一个新的 网易云 JS 上下文

示例代码

更详细的使用方法可以看头文件导出清单 kugou_music_api.h ncm_music_api.h

以下是一个简单的示例,展示了如何初始化引擎、创建酷狗上下文,并使用 top_song / playlist_detail 方法获取数据:

#include <stdio.h>
#include <stdlib.h>
#include <engine.h>
#include "kugou_music_api.h"

int main(int argc, char **argv)
{
  init_engine();
  printf("Engine initialized.\n");

  KugouProcessEnv env = {
      .platform = "lite", //lite: 酷狗概念版, 默认为手机版留空字符串
      // 设备id(可选,建议固定 )
      // KUGOU_API_GUID 建议为 uuidv4
      // KUGOU_API_DEV 建议长度为 10 位的字符串
      .KUGOU_API_GUID = "45593bdf-a805-4c68-80fb-c526733fa49b",
      .KUGOU_API_DEV = "iz6v67tm56",
      .KUGOU_API_MAC = "42:69:CB:E2:0D:DE",  // MAC地址
  };

  JSContext *ctx = kugou_init(&env);
  // // JSContext *ctx2 = get_context(); 创建第二个上下文

  KugouAPI *api = create_kugou_api();

  if (!ctx)
  {
    printf("Failed to initialize kugou context\n");
    return 1;
  }

  const char *cookies = "";
  const char *params = "{}";

  const char *response = api->top_song(ctx, cookies, params, NULL);
  printf("Response: %s\n", response);
  free((void *)response);

  kugou_destroy();

  JSContext *ncmCtx = ncm_init(NULL);

  NCMAPI *api = create_ncm_api();

  const char *response3 = ncmApi->top_song(ncmCtx, "", "{\"id\": \"96\"}", NULL);\

  printf("NCM API Response: %s\n", response3);

  free((void *)response3);

  ncm_destroy();

  destroy_engine();
}

特性

因项目为简单学习使用,一下方法实际可用性未测试,欢迎 Pr 指正

序号KuGouMusicNeteaseCloudMusic
1登录登录
2刷新登录刷新登录
3发送验证码发送验证码
4dfid 获取校验验证码
5获取用户额外信息注册(修改密码)
6获取用户 vip 信息获取用户信息 , 歌单,收藏,mv, dj 数量
7获取用户歌单获取用户歌单
8获取用户关注歌手获取用户电台
9获取用户听歌历史排行获取用户关注列表
10获取用户最近听歌历史获取用户粉丝列表
11获取继续播放信息获取用户动态
12收藏歌单/新建歌单获取用户播放记录
13取消收藏歌单/删除歌单获取精品歌单
14对歌单添加歌曲获取歌单详情
15对歌单删除歌曲搜索
16新碟上架搜索建议
17专辑信息获取歌词
18专辑详情歌曲评论
19专辑音乐列表收藏单曲到歌单
20获取音乐 URL专辑评论
21获取歌曲高潮部分歌单评论
22搜索mv 评论
23默认搜索关键词电台节目评论
24综合搜索banner
25热搜列表获取歌曲详情
26搜索建议获取专辑内容
27歌词搜索获取歌手单曲
28获取歌词获取歌手 mv
29歌单分类获取歌手专辑
30歌单获取歌手描述
31主题歌单获取相似歌手
32音效歌单获取相似歌单
33获取歌单详情相似 mv
34获取歌单所有歌曲获取相似音乐
35获取歌单所有歌曲(新版)获取最近 5 个听了这首歌的用户
36相似歌单获取每日推荐歌单
37获取主题歌单所有歌曲获取每日推荐歌曲
38获取主题音乐私人 FM
39获取主题音乐详情签到
40歌曲推荐喜欢音乐
41获取歌手和专辑图片垃圾桶
42获取歌手图片歌单 ( 网友精选碟 )
43获取音乐相关信息新碟上架
44获取更多音乐版本热门歌手
45获取音乐伴奏信息最新 mv
46获取音乐 k 歌数量推荐 mv
47获取音乐详情推荐歌单
48获取音乐专辑/歌手信息推荐新音乐
49私人 FM推荐电台
50banner推荐节目
51乐库 banner独家放送
52乐库电台mv 排行
53乐库获取 mv 数据
54电台 - 推荐播放 mv/视频
55电台排行榜
56电台 - 图片歌手榜
57电台 - 音乐列表云盘
58编辑精选电台 - 推荐
59编辑精选数据电台 - 分类
60编辑精选歌单电台 - 分类推荐
61编辑精选专区电台 - 订阅
62编辑精选专区详情电台 - 详情
63领取 VIP电台 - 节目
64获取歌手列表给评论点赞
65获取歌手详情获取动态列表
66获取歌手专辑热搜列表(简略)
67获取歌手单曲发送私信
68获取歌手 MV发送私信歌单
69关注歌手新建歌单
70取消关注歌手收藏/取消收藏歌单
71获取关注歌手新歌歌单分类
72获取视频 url收藏的歌手列表
73获取歌曲 MV订阅的电台列表
74获取视频相关信息相关歌单
75获取视频详情付费精选接口
76新歌速递音乐是否可用检查接口
77场景音乐列表登录状态
78场景音乐详情获取视频播放地址
79获取场景音乐讨论区发送/删除评论
80获取场景音乐模块 Tag热门评论
81获取场景音乐歌单列表视频评论
82获取场景音乐视频列表退出登录
83获取场景音乐音乐列表所有榜单
84每日推荐所有榜单内容摘要
85历史推荐收藏视频
86风格推荐收藏 MV
87排行列表视频详情
88排行榜推荐列表相关视频
89排行榜往期列表关注用户
90排行榜信息新歌速递
91排行榜歌曲列表喜欢音乐列表(无序)
92歌曲评论收藏的 MV 列表
93歌曲评论-根据分类返回获取最新专辑
94歌曲评论-根据热词返回听歌打卡
95楼层评论获取视频标签/分类下的视频
96歌单评论已收藏专辑列表
97专辑评论获取动态评论
98歌曲曲谱歌单收藏者列表
99曲谱详情云盘歌曲删除
100推荐曲谱热门话题
101曲谱合集电台 - 推荐类型
102曲谱合集详情电台 - 非热门类型
103提交听歌历史电台 - 今日优选
104获取服务器时间心动模式/智能播放
105刷刷转发动态
106AI 推荐删除动态
107频道 - 获取用户所有频道分享歌曲、歌单、mv、电台、电台节目到动态
108频道 - 详情通知-私信
109频道 - 频道安利通知-评论
110频道 - 相似频道通知-@我
111频道 - 订阅通知-通知
112频道 - 音乐故事设置
113频道 - 音乐故事详情云盘数据详情
114动态 - 最常访问私信内容
115获取用户公开的音乐我的数字专辑
116听书 - 每日推荐batch 批量请求接口
117听书 - 排行榜推荐获取视频标签列表
118听书 - VIP 推荐全部 mv
119听书 - 每周推荐网易出品 mv
120听书 - 专辑详情收藏/取消收藏专辑
121听书 - 专辑音乐列表专辑动态信息
122歌曲详情 - 歌曲成绩单热搜列表(详细)
123歌曲详情 - 歌曲成绩单详情更换绑定手机
124检测手机号码是否已注册
125初始化昵称
126更新歌单描述
127更新歌单名
128更新歌单标签
129默认搜索关键词
130删除歌单
131电台 banner
132用户电台
133热门电台
134电台 - 节目详情
135电台 - 节目榜
136电台 - 新晋电台榜/热门电台榜
137类别热门电台
138云村热评
139电台 24 小时节目榜
140电台 24 小时主播榜
141电台最热主播榜
142电台主播新人榜
143电台付费精品榜
144歌手热门 50 首歌曲
145购买数字专辑
146获取 mv 点赞转发评论数数据
147获取视频点赞转发评论数数据
148调整歌单顺序
149调整歌曲顺序
150独家放送列表
151获取推荐视频
152获取视频分类列表
153获取全部视频列表接口
154获取历史日推可用日期列表
155获取历史日推详细数据
156国家编码列表
157首页-发现
158首页-发现-圆形图标入口列表
159数字专辑-全部新碟
160数字专辑-热门新碟
161数字专辑&数字单曲-榜单
162数字专辑-语种风格馆
163数字专辑详情
164更新头像
165歌单封面上传
166楼层评论
167歌手全部歌曲
168精品歌单标签列表
169用户等级信息
170电台个性推荐
171用户绑定信息
172用户绑定手机
173新版评论
174点赞过的视频
175收藏视频到视频歌单
176删除视频歌单里的视频
177最近播放的视频
178音乐日历
179电台订阅者列表
180云贝签到信息
181云贝签到
182云贝所有任务
183云贝 todo 任务
184云贝今日签到信息
185云贝完成任务
186云贝收入
187云贝支出
188云贝账户信息
189账号信息
190最近联系人
191私信音乐
192抱一抱评论
193评论抱一抱列表
194收藏的专栏
195关注歌手新歌
196关注歌手新 MV
197歌手详情
198云盘上传
199二维码登录
200话题详情
201话题详情热门动态
202歌单详情动态
203绑定手机
204一起听状态
205用户历史评论
206云盘歌曲信息匹配纠正
207云贝推歌
208云贝推歌历史记录
209已购单曲
210获取 mlog 播放地址
211将 mlog id 转为视频 id
212vip 成长值
213vip 成长值获取记录
214vip 任务
215领取 vip 成长值
216歌手粉丝
217数字专辑详情
218数字专辑销量
219音乐人数据概况
220音乐人播放趋势
221音乐人任务
222账号云豆数
223领取云豆
224获取 VIP 信息
225音乐人签到
226发送文本动态
227获取客户端歌曲下载 url
228获取歌单所有歌曲
229乐签信息
230最近播放-歌曲
231最近播放-视频
232最近播放-声音
233最近播放-歌单
234最近播放-专辑
235最近播放-播客
236签到进度
237重复昵称检测
238歌手粉丝数量
239音乐人任务(新)
240内部版本接口
241歌单更新播放量
242黑胶时光机
243音乐百科 - 简要信息
244乐谱列表
245乐谱内容
246曲风列表
247曲风偏好
248曲风详情
249曲风-歌曲
250曲风-专辑
251曲风-歌单
252曲风-歌手
253私信和通知接口
254回忆坐标
255播客搜索
256播客声音上传
257验证接口-二维码生成
258验证接口-二维码检测
259听歌识曲
260根据 nickname 获取 userid 接口
261播客声音列表
262专辑简要百科信息
263歌曲简要百科信息
264歌手简要百科信息
265mv 简要百科信息
266搜索歌手
267用户贡献内容
268用户贡献条目、积分、云贝数量
269年度听歌报告
270播客声音搜索
271播客声音排序
272播客列表详情
273本地歌曲文件匹配网易云歌曲信息
274歌曲音质详情
275歌曲红心数量
276私人 FM 模式选择
277播客删除
278电台排行榜获取
279获取声音歌词
280获取专辑歌曲的音质
281歌手动态信息
282最近听歌列表
283云盘导入歌曲
284获取客户端歌曲下载链接 - 新版
285当前账号关注的用户/歌手
286会员下载歌曲记录
287会员本月下载歌曲记录
288已购买单曲
289歌曲是否喜爱
290用户是否互相关注
291歌曲动态封面
292用户徽章
293用户状态
294用户状态 - 支持设置的状态
295用户状态 - 相同状态的用户
296用户状态 - 编辑
297听歌足迹 - 年度听歌足迹
298听歌足迹 - 今日收听
299听歌足迹 - 总收听时长
300听歌足迹 - 本周/本月收听时长
301听歌足迹 - 周/月/年收听报告
302歌单导入 - 元数据/文字/链接导入
303歌单导入 - 任务状态
304副歌时间
305相关歌单推荐
306歌词摘录 - 歌词摘录信息
307歌词摘录 - 我的歌词本
308歌词摘录 - 添加/修改摘录歌词
309歌词摘录 - 删除摘录歌词
310广播电台 - 分类/地区信息
311广播电台 - 我的收藏
312广播电台 - 电台信息
313广播电台 - 全部电台
314广播电台 - 收藏/取消收藏电台
315用户的创建歌单列表
316用户的收藏歌单列表

项目结构

KouGouMusicLibrary/

├─ node_modules/
├─ package.json
├─ vcpkg-configuration.json
├─ vcpkg.json
├─ webpack.config.js       # Webpack打包配置
├─ src/
   ├─ js/
   ├─ index.js        # JS入口文件
   ├─ axios_bridge.js # Axios桥接工具
   └─ modulesDefinitions.js # 静态模块导出定义文件
   ├─ c/
   ├─ http.c          # HTTP支持代码
   ├─ kugou_music_api.c # 主要方法定义模块
   ├─ main.c          # 主程序入口
   ├─ test.c          # 测试代码
   └─ tinythread.c    # 线程支持(第三方)
   └─ include/
       ├─ app.bundle.h
       ├─ kugou_music_api.h # API头文件
       └─ tinycthread.h

├─ quickjs/                # QuickJS子模块(源码或预编译)

├─ build/                  # 构建输出目录

├─ bundle/                 # 打包产物(中间产物)
   ├─ js/
   └─ app.bundle.js   # webpack 打包js产物
   └─ c/
       └─ app.bundle.c    # qjsc 编译 js 生成的 c模块

├─ KuGouMucisApi/          # 酷狗音乐API node 服务 子模块

├─ vcpkg_installed/

├─ CMakeLists.txt          # CMake主配置文件

└─ CMakePresets.json       # CMake预设配置

构建指南

1. JavaScript 打包

使用 Webpack 打包 JavaScript 文件:

pnpm i
npx webpack

2. C 库构建

使用 CMake 构建 C 库:

cmake --preset windows-x64-vcpkg
cmake --build --preset windows-x64-vcpkg-Release --target qjsc  # 手动构建qjsc依赖
cmake --build --preset windows-x64-vcpkg-Release

注意事项

  • 线程安全性: JSContext 不能跨线程使用。
  • 内存管理: 所有返回的字符串需要使用 free 释放内存。
  • 依赖管理: 确保正确安装 vcpkgpnpm

贡献

欢迎提交 Issue 和 Pull Request!