From d10296ccd8f435a1bc4eaad76b913fbd506de6b7 Mon Sep 17 00:00:00 2001 From: MoeFurina Date: Wed, 11 Feb 2026 16:25:30 +0800 Subject: [PATCH] feat(module): add user playlist collect Co-Authored-By: binaryify --- README.MD | 2 ++ module/user_playlist_collect.js | 14 ++++++++++++ module/user_playlist_create.js | 14 ++++++++++++ package.json | 2 +- public/docs/home.md | 38 +++++++++++++++++++++++++++++++++ util/request.js | 12 +++++------ 6 files changed, 75 insertions(+), 7 deletions(-) create mode 100644 module/user_playlist_collect.js create mode 100644 module/user_playlist_create.js diff --git a/README.MD b/README.MD index 7fa1827..f2c3697 100644 --- a/README.MD +++ b/README.MD @@ -497,6 +497,8 @@ banner({ type: 0 }).then((res) => { 312. 广播电台 - 电台信息 313. 广播电台 - 全部电台 314. 广播电台 - 收藏/取消收藏电台 +315. 用户的创建歌单列表 +316. 用户的收藏歌单列表 ## 单元测试 diff --git a/module/user_playlist_collect.js b/module/user_playlist_collect.js new file mode 100644 index 0000000..24fb3de --- /dev/null +++ b/module/user_playlist_collect.js @@ -0,0 +1,14 @@ +// 获取用户的收藏歌单列表 + +const createOption = require('../util/option.js') +module.exports = (query, request) => { + const data = { + limit: query.limit || '100', + offset: query.offset || '0', + userId: query.uid, + isWebview: 'true', + includeRedHeart: 'true', + includeTop: 'true', + } + return request(`/api/user/playlist/collect`, data, createOption(query)) +} diff --git a/module/user_playlist_create.js b/module/user_playlist_create.js new file mode 100644 index 0000000..03ed06d --- /dev/null +++ b/module/user_playlist_create.js @@ -0,0 +1,14 @@ +// 获取用户的创建歌单列表 + +const createOption = require('../util/option.js') +module.exports = (query, request) => { + const data = { + limit: query.limit || '100', + offset: query.offset || '0', + userId: query.uid, + isWebview: 'true', + includeRedHeart: 'true', + includeTop: 'true', + } + return request(`/api/user/playlist/create`, data, createOption(query)) +} diff --git a/package.json b/package.json index 8143c1b..2b76092 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "NeteaseCloudMusicApi", - "version": "4.28.1", + "version": "4.29.0", "description": "网易云音乐 NodeJS 版 API", "scripts": { "start": "node app.js", diff --git a/public/docs/home.md b/public/docs/home.md index 5223225..c148eaa 100644 --- a/public/docs/home.md +++ b/public/docs/home.md @@ -330,6 +330,8 @@ 312. 广播电台 - 电台信息 313. 广播电台 - 全部电台 314. 广播电台 - 收藏/取消收藏电台 +315. 用户的创建歌单列表 +316. 用户的收藏歌单列表 ## 安装 @@ -5137,6 +5139,42 @@ let data = encodeURIComponent( **调用例子:** `/broadcast/channel/list` +### 用户的创建歌单列表 + +说明 : 调用此接口, 传入用户id, 获取用户的创建歌单列表 + +**必选参数 :** + +`uid`: 用户 id + +**可选参数 :** + +`limit` : 返回数量 , 默认为 100 + +`offset` : 偏移数量,用于分页 ,如 :( 页数 -1)\*30, 其中 30 为 limit 的值 , 默认为 0 + +**接口地址 :** `/user/playlist/create` + +**调用例子 :** `/user/playlist/create?uid=32953014` + +### 用户的收藏歌单列表 + +说明 : 调用此接口, 传入用户id, 获取用户的收藏歌单列表 + +**必选参数 :** + +`uid`: 用户 id + +**可选参数 :** + +`limit` : 返回数量 , 默认为 100 + +`offset` : 偏移数量,用于分页 ,如 :( 页数 -1)\*30, 其中 30 为 limit 的值 , 默认为 0 + +**接口地址 :** `/user/playlist/collect` + +**调用例子 :** `/user/playlist/collect?uid=32953014` + ## 离线访问此文档 此文档同时也是 Progressive Web Apps(PWA), 加入了 serviceWorker, 可离线访问 diff --git a/util/request.js b/util/request.js index 2d57d69..d67247c 100644 --- a/util/request.js +++ b/util/request.js @@ -191,11 +191,11 @@ const createRequest = (uri, data, options) => { // 根据加密方式处理 switch (crypto) { case 'weapi': - headers['Referer'] = DOMAIN + headers['Referer'] = options.domain || DOMAIN headers['User-Agent'] = options.ua || chooseUserAgent('weapi') data.csrf_token = csrfToken encryptData = encrypt.weapi(data) - url = DOMAIN + '/weapi/' + uri.substr(5) + url = (options.domain || DOMAIN) + '/weapi/' + uri.substr(5) break case 'linuxapi': @@ -203,10 +203,10 @@ const createRequest = (uri, data, options) => { options.ua || chooseUserAgent('linuxapi', 'linux') encryptData = encrypt.linuxapi({ method: 'POST', - url: DOMAIN + uri, + url: (options.domain || DOMAIN) + uri, params: data, }) - url = DOMAIN + '/api/linux/forward' + url = (options.domain || DOMAIN) + '/api/linux/forward' break case 'eapi': @@ -246,9 +246,9 @@ const createRequest = (uri, data, options) => { : ENCRYPT_RESPONSE, ) encryptData = encrypt.eapi(uri, data) - url = API_DOMAIN + '/eapi/' + uri.substr(5) + url = (options.domain || API_DOMAIN) + '/eapi/' + uri.substr(5) } else if (crypto === 'api') { - url = API_DOMAIN + uri + url = (options.domain || API_DOMAIN) + uri encryptData = data } break