From e8f9a7539a63b8295512956b16c47a5ca733cf7a Mon Sep 17 00:00:00 2001 From: binaryify Date: Sun, 25 Oct 2020 21:59:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BB=A3=E7=90=86=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=A4=B1=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98=20#992,?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=B0=E7=A2=9F=E4=B8=8A=E6=9E=B6=E4=B8=8D?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=91=A8=E6=95=B0=E6=8D=AE=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98,=E4=BF=AE=E5=A4=8D=E6=8E=A8=E8=8D=90=E6=96=B0?= =?UTF-8?q?=E9=9F=B3=E4=B9=90=E6=8E=A5=E5=8F=A3=E8=BF=94=E5=9B=9E=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E9=97=AE=E9=A2=98,=E5=B9=B6=E6=B7=BB=E5=8A=A0limit?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E6=94=AF=E6=8C=81=20#981,=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0`=E4=BA=91=E8=B4=9D`=E7=9B=B8=E5=85=B3=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=20#985,=E6=B7=BB=E5=8A=A0`=E7=94=A8=E6=88=B7=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7=E4=BF=A1=E6=81=AF`=E6=8E=A5=E5=8F=A3,=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2=E6=8E=A5=E5=8F=A3=E6=96=87=E4=BB=B6=E6=89=80=E6=9C=89?= =?UTF-8?q?http=20url=20=E4=B8=BA=20https?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/ISSUE_TEMPLATE/------.md | 6 +- CHANGELOG.MD | 11 ++++ README.MD | 11 +++- docs/README.md | 94 +++++++++++++++++++++++++++- interface.d.ts | 37 ++++++++++- module/activate_init_profile.js | 2 +- module/batch.js | 2 +- module/cellphone_existence_check.js | 2 +- module/countries_code_list.js | 2 +- module/dj_banner.js | 2 +- module/dj_category_excludehot.js | 2 +- module/dj_category_recommend.js | 2 +- module/dj_today_perfered.js | 2 +- module/hot_topic.js | 2 +- module/personalized_newsong.js | 2 + module/playlist_desc_update.js | 2 +- module/playlist_name_update.js | 2 +- module/playlist_tags_update.js | 2 +- module/playlist_track_add.js | 2 +- module/playlist_track_delete.js | 2 +- module/playlist_tracks.js | 4 +- module/playmode_intelligence_list.js | 2 +- module/register_cellphone.js | 17 ++--- module/search_default.js | 2 +- module/share_resource.js | 2 +- module/user_account.js | 9 +++ module/user_cloud_del.js | 2 +- module/yunbei.js | 10 +++ module/yunbei_expense.js | 17 +++++ module/yunbei_info.js | 9 +++ module/yunbei_receipt.js | 17 +++++ module/yunbei_sign.js | 11 ++++ module/yunbei_task_finish.js | 17 +++++ module/yunbei_tasks.js | 14 +++++ module/yunbei_tasks_todo.js | 14 +++++ module/yunbei_today.js | 9 +++ package.json | 5 +- util/request.js | 29 ++++++--- 38 files changed, 333 insertions(+), 46 deletions(-) create mode 100644 module/user_account.js create mode 100644 module/yunbei.js create mode 100644 module/yunbei_expense.js create mode 100644 module/yunbei_info.js create mode 100644 module/yunbei_receipt.js create mode 100644 module/yunbei_sign.js create mode 100644 module/yunbei_task_finish.js create mode 100644 module/yunbei_tasks.js create mode 100644 module/yunbei_tasks_todo.js create mode 100644 module/yunbei_today.js diff --git a/.github/ISSUE_TEMPLATE/------.md b/.github/ISSUE_TEMPLATE/------.md index eb44d17..6fa4f64 100644 --- a/.github/ISSUE_TEMPLATE/------.md +++ b/.github/ISSUE_TEMPLATE/------.md @@ -2,7 +2,7 @@ name: 创建问题反馈 about: 问题反馈 title: "<不按照模版格式或者删除模版信息将得不到处理,确认看完了调用前须知再发 issues>" -labels: bug +labels: '' assignees: '' --- @@ -25,6 +25,10 @@ assignees: '' +--- + +>维护项目都是业余时间,精力有限,我只能挑容易解决的issues处理,为了节约双方时间,请尽可能提供足够的有用的信息,给的信息不够我只能根据精力和时间看情况处理,如果模板信息看都不看就删掉,我不会进行任何回复,并且一个月后close掉issue + >先看文档有没有相关说明,调用前须知必看,确认看完了调用前须知再发 issues >先在 issues 搜一下是否有相似问题,没有再发,否则直接关闭 diff --git a/CHANGELOG.MD b/CHANGELOG.MD index 8ca84d1..93e53ff 100644 --- a/CHANGELOG.MD +++ b/CHANGELOG.MD @@ -1,4 +1,15 @@ # 更新日志 +### 3.45.0 | 2020.10.25 +- 修复代理配置失效的问题 [#992](https://github.com/Binaryify/NeteaseCloudMusicApi/issues/992) + +- 修复新碟上架不返回周数据的问题,修复推荐新音乐接口返回数量问题,并添加limit参数支持 [#981](https://github.com/Binaryify/NeteaseCloudMusicApi/issues/981) + +- 添加`云贝`相关接口 [#985](https://github.com/Binaryify/NeteaseCloudMusicApi/issues/985) + +- 添加`用户账号信息`接口 + +- 替换接口文件所有http url 为 https + ### 3.44.0 | 2020.10.17 - 更新`电台详情`,`电台节目详情`接口 [#977](https://github.com/Binaryify/NeteaseCloudMusicApi/issues/977) diff --git a/README.MD b/README.MD index fe4db0f..679cf3e 100644 --- a/README.MD +++ b/README.MD @@ -279,7 +279,16 @@ banner({ type:0 }).then(res=>{ 177. 最近播放的视频 178. 音乐日历 179. 电台订阅者列表 - +180. 云贝签到信息 +181. 云贝签到 +182. 云贝所有任务 +183. 云贝todo任务 +184. 云贝今日签到信息 +185. 云贝完成任务 +186. 云贝收入 +187. 云贝支出 +188. 云贝账户信息 +189. 账号信息 ## 更新日志 diff --git a/docs/README.md b/docs/README.md index addae5f..c7da719 100644 --- a/docs/README.md +++ b/docs/README.md @@ -195,6 +195,16 @@ 177. 最近播放的视频 178. 音乐日历 179. 电台订阅者列表 +180. 云贝签到信息 +181. 云贝签到 +182. 云贝所有任务 +183. 云贝todo任务 +184. 云贝今日签到信息 +185. 云贝完成任务 +186. 云贝收入 +187. 云贝支出 +188. 云贝账户信息 +189. 账号信息 ## 安装 @@ -520,6 +530,14 @@ v3.30.0后支持手动传入cookie,登录接口返回内容新增 `cookie` 字 **调用例子 :** `/user/detail?uid=32953014` +### 获取账号信息 + +说明 : 登录后调用此接口 ,可获取用户账号信息 + +**接口地址 :** `/user/account` + +**调用例子 :** `/user/account` + ### 获取用户信息 , 歌单,收藏,mv, dj 数量 说明 : 登录后调用此接口 , 可以获取用户信息 @@ -2179,12 +2197,12 @@ mp3url 不能直接用 , 可通过 `/song/url` 接口传入歌曲 id 获取具 **调用例子 :** `/personalized?limit=1` - - ### 推荐新音乐 说明 : 调用此接口 , 可获取推荐新音乐 +**可选参数 :** `limit`: 取出数量 , 默认为 10 (不支持 offset) + **接口地址 :** `/personalized/newsong` **调用例子 :** `/personalized/newsong` @@ -2916,12 +2934,82 @@ type='1009' 获取其 id, 如`/search?keywords= 代码时间 &type=1009` **调用例子 :** `/digitalAlbum/ordering?id=86286082&payment=3&quantity=1` ### 音乐日历 -说明 : 登录后调用此接口 传入开始和结束时间,可获取音乐日历 +说明 : 登录后调用此接口,传入开始和结束时间,可获取音乐日历 **接口地址 :** `/calendar` **调用例子 :** `/calendar?startTime=1606752000000&endTime=1609430399999` +### 云贝 +说明 : 登录后调用此接口可获取云贝签到信息(连续签到天数,第二天全部可获得的云贝) + +**接口地址 :** `/yunbei` + +**调用例子 :** `/yunbei` + +### 云贝今日签到信息 +说明 : 登录后调用此接口可获取云贝今日签到信息(今日签到获取的云贝数) + +**接口地址 :** `/yunbei/today` + +**调用例子 :** `/yunbei/today` + +### 云贝签到 +说明 : 登录后调用此接口可进行云贝签到 + +**接口地址 :** `/yunbei/sign` + +**调用例子 :** `/yunbei/sign` + +### 云贝账户信息 +说明 :登录后调用此接口可获取云贝账户信息(账户云贝数) + +**接口地址 :** `/yunbei/info` + +**调用例子 :** `/yunbei/info` + +### 云贝所有任务 +说明 :登录后调用此接口可获取云贝所有任务 + +**接口地址 :** `/yunbei/tasks` + +**调用例子 :** `/yunbei/tasks` + +### 云贝todo任务 +说明 :登录后调用此接口可获取云贝todo任务 + +**接口地址 :** `/yunbei/tasks/todo` + +**调用例子 :** `/yunbei/tasks/todo` + +### 云贝完成任务 +**必选参数 :** + +`userTaskId` : 任务id + +**接口地址 :** `/yunbei/task/finish` + +**调用例子 :** `/yunbei/task/finish?userTaskId=5146243240` + +### 云贝收入 +说明 :登录后调用此接口可获取云贝收入 + +**可选参数 :** `limit`: 取出评论数量 , 默认为 10 + +`offset`: 偏移数量 , 用于分页 , 如 :( 评论页数 -1)\*10, 其中 10 为 limit 的值 +**接口地址 :** `/yunbei/tasks/receipt` + +**调用例子 :** `/yunbei/tasks/receipt?limit=1` + +### 云贝支出 +说明 :登录后调用此接口可获取云贝支出 + +**可选参数 :** `limit`: 取出评论数量 , 默认为 10 + +`offset`: 偏移数量 , 用于分页 , 如 :( 评论页数 -1)\*10, 其中 10 为 limit 的值 +**接口地址 :** `/yunbei/tasks/expense` + +**调用例子 :** `/yunbei/tasks/expense?limit=1` ### batch批量请求接口 说明 : 登录后调用此接口 ,传入接口和对应原始参数(原始参数非文档里写的参数,需参考源码),可批量请求接口 diff --git a/interface.d.ts b/interface.d.ts index 52edaed..382d6e7 100644 --- a/interface.d.ts +++ b/interface.d.ts @@ -802,7 +802,10 @@ export function personalized_djprogram( export function personalized_mv(params: RequestBaseConfig): Promise export function personalized_newsong( - params: RequestBaseConfig, + params: { + area?: string | number + limit?: string | number + } & RequestBaseConfig, ): Promise export function personalized_privatecontent( @@ -1269,3 +1272,35 @@ export function dj_subscriber( time?: number | string } & RequestBaseConfig, ): Promise + +export function user_account(params: RequestBaseConfig): Promise + +export function yunbei(params: RequestBaseConfig): Promise + +export function yunbei_info(params: RequestBaseConfig): Promise + +export function yunbei_sign(params: RequestBaseConfig): Promise + +export function yunbei_receipt( + params: { + limit?: number | string + offset?: number | string + } & RequestBaseConfig, +): Promise + +export function yunbei_expense( + params: { + limit?: number | string + offset?: number | string + } & RequestBaseConfig, +): Promise + +export function yunbei_tasks(params: RequestBaseConfig): Promise + +export function yunbei_today(params: RequestBaseConfig): Promise + +export function yunbei_tasks_todo(params: RequestBaseConfig): Promise + +export function yunbei_task_finish( + params: { userTaskId?: number | string } & RequestBaseConfig, +): Promise diff --git a/module/activate_init_profile.js b/module/activate_init_profile.js index bce6678..0fe48ba 100644 --- a/module/activate_init_profile.js +++ b/module/activate_init_profile.js @@ -6,7 +6,7 @@ module.exports = (query, request) => { } return request( 'POST', - `http://music.163.com/eapi/activate/initProfile`, + `https://music.163.com/eapi/activate/initProfile`, data, { crypto: 'eapi', diff --git a/module/batch.js b/module/batch.js index a55252f..2e95070 100644 --- a/module/batch.js +++ b/module/batch.js @@ -9,7 +9,7 @@ module.exports = (query, request) => { data[i] = query[i] } }) - return request('POST', `http://music.163.com/eapi/batch`, data, { + return request('POST', `https://music.163.com/eapi/batch`, data, { crypto: 'eapi', proxy: query.proxy, url: '/api/batch', diff --git a/module/cellphone_existence_check.js b/module/cellphone_existence_check.js index feb7264..c4912ae 100644 --- a/module/cellphone_existence_check.js +++ b/module/cellphone_existence_check.js @@ -7,7 +7,7 @@ module.exports = (query, request) => { } return request( 'POST', - `http://music.163.com/eapi/cellphone/existence/check`, + `https://music.163.com/eapi/cellphone/existence/check`, data, { crypto: 'eapi', diff --git a/module/countries_code_list.js b/module/countries_code_list.js index 7d098fa..15a76b6 100644 --- a/module/countries_code_list.js +++ b/module/countries_code_list.js @@ -3,7 +3,7 @@ module.exports = (query, request) => { const data = {} return request( 'POST', - `http://interface3.music.163.com/eapi/lbs/countries/v1`, + `https://interface3.music.163.com/eapi/lbs/countries/v1`, data, { crypto: 'eapi', diff --git a/module/dj_banner.js b/module/dj_banner.js index 6503c3b..1ec17ba 100644 --- a/module/dj_banner.js +++ b/module/dj_banner.js @@ -5,7 +5,7 @@ module.exports = (query, request) => { query.cookie.os = 'pc' return request( 'POST', - `http://music.163.com/weapi/djradio/banner/get`, + `https://music.163.com/weapi/djradio/banner/get`, {}, { crypto: 'weapi', diff --git a/module/dj_category_excludehot.js b/module/dj_category_excludehot.js index 4a5f184..cfd4266 100644 --- a/module/dj_category_excludehot.js +++ b/module/dj_category_excludehot.js @@ -3,7 +3,7 @@ module.exports = (query, request) => { return request( 'POST', - `http://music.163.com/weapi/djradio/category/excludehot`, + `https://music.163.com/weapi/djradio/category/excludehot`, {}, { crypto: 'weapi', diff --git a/module/dj_category_recommend.js b/module/dj_category_recommend.js index 3e96857..a0e4bf1 100644 --- a/module/dj_category_recommend.js +++ b/module/dj_category_recommend.js @@ -3,7 +3,7 @@ module.exports = (query, request) => { return request( 'POST', - `http://music.163.com/weapi/djradio/home/category/recommend`, + `https://music.163.com/weapi/djradio/home/category/recommend`, {}, { crypto: 'weapi', diff --git a/module/dj_today_perfered.js b/module/dj_today_perfered.js index 8122bad..a4881c8 100644 --- a/module/dj_today_perfered.js +++ b/module/dj_today_perfered.js @@ -6,7 +6,7 @@ module.exports = (query, request) => { } return request( 'POST', - `http://music.163.com/weapi/djradio/home/today/perfered`, + `https://music.163.com/weapi/djradio/home/today/perfered`, data, { crypto: 'weapi', diff --git a/module/hot_topic.js b/module/hot_topic.js index bba8480..56d3dca 100644 --- a/module/hot_topic.js +++ b/module/hot_topic.js @@ -5,7 +5,7 @@ module.exports = (query, request) => { limit: query.limit || 20, offset: query.offset || 0, } - return request('POST', `http://music.163.com/weapi/act/hot`, data, { + return request('POST', `https://music.163.com/weapi/act/hot`, data, { crypto: 'weapi', cookie: query.cookie, proxy: query.proxy, diff --git a/module/personalized_newsong.js b/module/personalized_newsong.js index 90f2b8e..283b92a 100644 --- a/module/personalized_newsong.js +++ b/module/personalized_newsong.js @@ -3,6 +3,8 @@ module.exports = (query, request) => { const data = { type: 'recommend', + limit: query.limit || 10, + areaId: query.areaId || 0, } return request( 'POST', diff --git a/module/playlist_desc_update.js b/module/playlist_desc_update.js index ef7b0ca..bebd9bb 100644 --- a/module/playlist_desc_update.js +++ b/module/playlist_desc_update.js @@ -7,7 +7,7 @@ module.exports = (query, request) => { } return request( 'POST', - `http://interface3.music.163.com/eapi/playlist/desc/update`, + `https://interface3.music.163.com/eapi/playlist/desc/update`, data, { crypto: 'eapi', diff --git a/module/playlist_name_update.js b/module/playlist_name_update.js index 8161680..ae53946 100644 --- a/module/playlist_name_update.js +++ b/module/playlist_name_update.js @@ -7,7 +7,7 @@ module.exports = (query, request) => { } return request( 'POST', - `http://interface3.music.163.com/eapi/playlist/update/name`, + `https://interface3.music.163.com/eapi/playlist/update/name`, data, { crypto: 'eapi', diff --git a/module/playlist_tags_update.js b/module/playlist_tags_update.js index 80d82c6..44de8c6 100644 --- a/module/playlist_tags_update.js +++ b/module/playlist_tags_update.js @@ -7,7 +7,7 @@ module.exports = (query, request) => { } return request( 'POST', - `http://interface3.music.163.com/eapi/playlist/tags/update`, + `https://interface3.music.163.com/eapi/playlist/tags/update`, data, { crypto: 'eapi', diff --git a/module/playlist_track_add.js b/module/playlist_track_add.js index 97a3c1d..c2391f3 100644 --- a/module/playlist_track_add.js +++ b/module/playlist_track_add.js @@ -11,7 +11,7 @@ module.exports = async (query, request) => { } console.log(data) - return request('POST', `http://music.163.com/api/playlist/track/add`, data, { + return request('POST', `https://music.163.com/api/playlist/track/add`, data, { crypto: 'weapi', cookie: query.cookie, proxy: query.proxy, diff --git a/module/playlist_track_delete.js b/module/playlist_track_delete.js index 45cb0ae..54ef409 100644 --- a/module/playlist_track_delete.js +++ b/module/playlist_track_delete.js @@ -14,7 +14,7 @@ module.exports = async (query, request) => { return request( 'POST', - `http://music.163.com/api/playlist/track/delete`, + `https://music.163.com/api/playlist/track/delete`, data, { crypto: 'weapi', diff --git a/module/playlist_tracks.js b/module/playlist_tracks.js index 2ca3e93..302cfc2 100644 --- a/module/playlist_tracks.js +++ b/module/playlist_tracks.js @@ -13,7 +13,7 @@ module.exports = async (query, request) => { try { const res = await request( 'POST', - `http://music.163.com/api/playlist/manipulate/tracks`, + `https://music.163.com/api/playlist/manipulate/tracks`, data, { crypto: 'weapi', @@ -32,7 +32,7 @@ module.exports = async (query, request) => { if (error.body.code === 512) { return request( 'POST', - `http://music.163.com/api/playlist/manipulate/tracks`, + `https://music.163.com/api/playlist/manipulate/tracks`, { op: query.op, // del,add pid: query.pid, // 歌单id diff --git a/module/playmode_intelligence_list.js b/module/playmode_intelligence_list.js index b3bc5a3..81b61ba 100644 --- a/module/playmode_intelligence_list.js +++ b/module/playmode_intelligence_list.js @@ -10,7 +10,7 @@ module.exports = (query, request) => { } return request( 'POST', - `http://music.163.com/weapi/playmode/intelligence/list`, + `https://music.163.com/weapi/playmode/intelligence/list`, data, { crypto: 'weapi', diff --git a/module/register_cellphone.js b/module/register_cellphone.js index 375dd3b..602e0fa 100644 --- a/module/register_cellphone.js +++ b/module/register_cellphone.js @@ -9,15 +9,10 @@ module.exports = (query, request) => { password: crypto.createHash('md5').update(query.password).digest('hex'), nickname: query.nickname, } - return request( - 'POST', - `https://music.163.com/weapi/register/cellphone`, - data, - { - crypto: 'weapi', - cookie: query.cookie, - proxy: query.proxy, - realIP: query.realIP, - }, - ) + return request('POST', `https://music.163.com/api/register/cellphone`, data, { + crypto: 'weapi', + cookie: query.cookie, + proxy: query.proxy, + realIP: query.realIP, + }) } diff --git a/module/search_default.js b/module/search_default.js index 1e14ee5..b573254 100644 --- a/module/search_default.js +++ b/module/search_default.js @@ -3,7 +3,7 @@ module.exports = (query, request) => { return request( 'POST', - `http://interface3.music.163.com/eapi/search/defaultkeyword/get`, + `https://interface3.music.163.com/eapi/search/defaultkeyword/get`, {}, { crypto: 'eapi', diff --git a/module/share_resource.js b/module/share_resource.js index a9f413f..64c016a 100644 --- a/module/share_resource.js +++ b/module/share_resource.js @@ -8,7 +8,7 @@ module.exports = (query, request) => { } return request( 'POST', - `http://music.163.com/weapi/share/friends/resource`, + `https://music.163.com/weapi/share/friends/resource`, data, { crypto: 'weapi', diff --git a/module/user_account.js b/module/user_account.js new file mode 100644 index 0000000..0eff002 --- /dev/null +++ b/module/user_account.js @@ -0,0 +1,9 @@ +module.exports = (query, request) => { + const data = {} + return request('POST', `https://music.163.com/api/nuser/account/get`, data, { + crypto: 'weapi', + cookie: query.cookie, + proxy: query.proxy, + realIP: query.realIP, + }) +} diff --git a/module/user_cloud_del.js b/module/user_cloud_del.js index ce45cba..7a5577b 100644 --- a/module/user_cloud_del.js +++ b/module/user_cloud_del.js @@ -4,7 +4,7 @@ module.exports = (query, request) => { const data = { songIds: [query.id], } - return request('POST', `http://music.163.com/weapi/cloud/del`, data, { + return request('POST', `https://music.163.com/weapi/cloud/del`, data, { crypto: 'weapi', cookie: query.cookie, proxy: query.proxy, diff --git a/module/yunbei.js b/module/yunbei.js new file mode 100644 index 0000000..b2bee9a --- /dev/null +++ b/module/yunbei.js @@ -0,0 +1,10 @@ +module.exports = (query, request) => { + const data = {} + // /api/point/today/get + return request('POST', `https://music.163.com/api/point/signed/get`, data, { + crypto: 'weapi', + cookie: query.cookie, + proxy: query.proxy, + realIP: query.realIP, + }) +} diff --git a/module/yunbei_expense.js b/module/yunbei_expense.js new file mode 100644 index 0000000..50b6f95 --- /dev/null +++ b/module/yunbei_expense.js @@ -0,0 +1,17 @@ +module.exports = (query, request) => { + const data = { + limit: query.limit || 10, + offset: query.offset || 0, + } + return request( + 'POST', + `https://music.163.com/store/api/point/expense`, + data, + { + crypto: 'api', + cookie: query.cookie, + proxy: query.proxy, + realIP: query.realIP, + }, + ) +} diff --git a/module/yunbei_info.js b/module/yunbei_info.js new file mode 100644 index 0000000..68ea2bf --- /dev/null +++ b/module/yunbei_info.js @@ -0,0 +1,9 @@ +module.exports = (query, request) => { + const data = {} + return request('POST', `https://music.163.com/api/v1/user/info`, data, { + crypto: 'weapi', + cookie: query.cookie, + proxy: query.proxy, + realIP: query.realIP, + }) +} diff --git a/module/yunbei_receipt.js b/module/yunbei_receipt.js new file mode 100644 index 0000000..5eb04ca --- /dev/null +++ b/module/yunbei_receipt.js @@ -0,0 +1,17 @@ +module.exports = (query, request) => { + const data = { + limit: query.limit || 10, + offset: query.offset || 0, + } + return request( + 'POST', + `https://music.163.com/store/api/point/receipt`, + data, + { + crypto: 'api', + cookie: query.cookie, + proxy: query.proxy, + realIP: query.realIP, + }, + ) +} diff --git a/module/yunbei_sign.js b/module/yunbei_sign.js new file mode 100644 index 0000000..9765f6d --- /dev/null +++ b/module/yunbei_sign.js @@ -0,0 +1,11 @@ +module.exports = (query, request) => { + const data = { + type: '0', + } + return request('POST', `https://music.163.com/api/point/dailyTask`, data, { + crypto: 'weapi', + cookie: query.cookie, + proxy: query.proxy, + realIP: query.realIP, + }) +} diff --git a/module/yunbei_task_finish.js b/module/yunbei_task_finish.js new file mode 100644 index 0000000..f9aec91 --- /dev/null +++ b/module/yunbei_task_finish.js @@ -0,0 +1,17 @@ +module.exports = (query, request) => { + const data = { + userTaskId: query.userTaskId, + depositCode: '0', + } + return request( + 'POST', + `https://music.163.com/api/usertool/task/point/receive`, + data, + { + crypto: 'weapi', + cookie: query.cookie, + proxy: query.proxy, + realIP: query.realIP, + }, + ) +} diff --git a/module/yunbei_tasks.js b/module/yunbei_tasks.js new file mode 100644 index 0000000..fdc2d43 --- /dev/null +++ b/module/yunbei_tasks.js @@ -0,0 +1,14 @@ +module.exports = (query, request) => { + const data = {} + return request( + 'POST', + `https://music.163.com/api/usertool/task/list/all`, + data, + { + crypto: 'weapi', + cookie: query.cookie, + proxy: query.proxy, + realIP: query.realIP, + }, + ) +} diff --git a/module/yunbei_tasks_todo.js b/module/yunbei_tasks_todo.js new file mode 100644 index 0000000..a294484 --- /dev/null +++ b/module/yunbei_tasks_todo.js @@ -0,0 +1,14 @@ +module.exports = (query, request) => { + const data = {} + return request( + 'POST', + `https://music.163.com/api/usertool/task/todo/query`, + data, + { + crypto: 'weapi', + cookie: query.cookie, + proxy: query.proxy, + realIP: query.realIP, + }, + ) +} diff --git a/module/yunbei_today.js b/module/yunbei_today.js new file mode 100644 index 0000000..5b542bf --- /dev/null +++ b/module/yunbei_today.js @@ -0,0 +1,9 @@ +module.exports = (query, request) => { + const data = {} + return request('POST', `https://music.163.com/api/point/today/get`, data, { + crypto: 'weapi', + cookie: query.cookie, + proxy: query.proxy, + realIP: query.realIP, + }) +} diff --git a/package.json b/package.json index 2f42af0..d31b5e3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "NeteaseCloudMusicApi", - "version": "3.44.0", + "version": "3.45.0", "description": "网易云音乐 NodeJS 版 API", "scripts": { "start": "node app.js", @@ -44,7 +44,8 @@ "axios": "^0.20.0", "express": "^4.17.1", "express-fileupload": "^1.1.9", - "pac-proxy-agent": "^4.0.0" + "pac-proxy-agent": "^4.0.0", + "tunnel": "^0.0.6" }, "devDependencies": { "@types/node": "14.11.10", diff --git a/util/request.js b/util/request.js index af2db70..c7187a3 100644 --- a/util/request.js +++ b/util/request.js @@ -4,11 +4,11 @@ const queryString = require('querystring') const PacProxyAgent = require('pac-proxy-agent') const http = require('http') const https = require('https') - +const tunnel = require('tunnel') +const qs = require('url') // request.debug = true // 开启可看到更详细信息 const chooseUserAgent = (ua = false) => { - // UA 列表要经常更新啊 const userAgentList = { mobile: [ // iOS 13.5.1 14.0 beta with safari @@ -122,11 +122,26 @@ const createRequest = (method, url, data, options) => { if (options.crypto === 'eapi') settings.encoding = null - if (/\.pac$/i.test(options.proxy)) { - settings.httpAgent = new PacProxyAgent(options.proxy) - settings.httpsAgent = new PacProxyAgent(options.proxy) - } else { - settings.proxy = options.proxy + if (options.proxy) { + if (options.proxy.indexOf('pac') > -1) { + settings.httpAgent = new PacProxyAgent(options.proxy) + settings.httpsAgent = new PacProxyAgent(options.proxy) + } else { + var purl = qs.parse(options.proxy) + if (purl.hostname) { + const agent = tunnel.httpsOverHttp({ + proxy: { + host: purl.hostname, + port: purl.port || 80, + }, + }) + settings.httpsAgent = agent + settings.httpAgent = agent + settings.proxy = false + } else { + console.error('代理配置无效,不使用代理') + } + } } axios(settings)