From 845c357aa3b0769558dc55f281304c6cee1403fe Mon Sep 17 00:00:00 2001 From: SnowingFox <1503401882@qq.com> Date: Sat, 15 Jan 2022 13:06:18 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat(playlist=5Ftrack=5Fall):=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0offset=E5=81=8F=E7=A7=BB=E9=87=8F=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 10 ++- module/playlist_track_all.js | 4 +- package-lock.json | 129 +---------------------------------- 3 files changed, 14 insertions(+), 129 deletions(-) diff --git a/docs/README.md b/docs/README.md index a555c2e..43a7d3f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1316,12 +1316,20 @@ tags: 歌单标签 **必选参数 :** `id` : 歌单 id -**可选参数 :** `limit` : 限制获取歌曲的数量 +**可选参数 :** `limit` : 限制获取歌曲的数量,默认值为当前歌单的歌曲数量 + +**可选参数 :** `offset` : 默认值为0,用于歌曲的分页,计算方法为 `limit` * `offset`<= 你得到的歌曲 <= `limit` * `offset + 1` **接口地址 :** `/playlist/track/all` **调用例子 :** `/playlist/track/all?id=24381616&limit=10` +> 注:关于`offset`,你可以这样理解,假设你当前的歌单有100首歌 +> +> 你传入limit=10&offset=1,你会得到第11-20首歌曲 +> +> 如果你设置limit=10&offset=2,你就会得到第21-30首歌曲 + ### 歌单详情动态 说明 : 调用后可获取歌单详情动态部分,如评论数,是否收藏,播放数 diff --git a/module/playlist_track_all.js b/module/playlist_track_all.js index 03a8c3a..9c6ecce 100644 --- a/module/playlist_track_all.js +++ b/module/playlist_track_all.js @@ -9,6 +9,7 @@ module.exports = (query, request) => { } //不放在data里面避免请求带上无用的数据 let limit = query.limit + let offset = parseInt(query.offset) || 0 let trackIds let idsData = Object.create(null) @@ -23,8 +24,9 @@ module.exports = (query, request) => { if (typeof limit === 'undefined') { limit = trackIds.length } + trackIds.forEach((item, index) => { - if (index < limit) { + if (index >= limit * offset && index < limit * (offset + 1)) { ids.push(item.id) } }) diff --git a/package-lock.json b/package-lock.json index b55ac1a..f8f1658 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,11 @@ { "name": "NeteaseCloudMusicApi", - "version": "4.1.1", + "version": "4.2.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "NeteaseCloudMusicApi", - "version": "4.1.1", + "version": "4.2.0", "license": "MIT", "dependencies": { "axios": "^0.24.0", @@ -43,37 +42,6 @@ "node": ">=12" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@eslint/eslintrc": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", @@ -1721,15 +1689,6 @@ "resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/escodegen": { "version": "1.14.3", "resolved": "https://registry.npm.taobao.org/escodegen/download/escodegen-1.14.3.tgz?cache=0&sync_timestamp=1596669832613&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescodegen%2Fdownload%2Fescodegen-1.14.3.tgz", @@ -2761,15 +2720,6 @@ "node": ">= 0.4.0" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/has-symbols": { "version": "1.0.1", "resolved": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.1.tgz", @@ -3198,12 +3148,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz?cache=0&sync_timestamp=1586796260005&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-tokens%2Fdownload%2Fjs-tokens-4.0.0.tgz", - "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=", - "dev": true - }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -5318,18 +5262,6 @@ "node": ">=8" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz?cache=0&sync_timestamp=1598611709087&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-5.5.0.tgz", - "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -5770,36 +5702,6 @@ } }, "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - } - } - }, "@eslint/eslintrc": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", @@ -7041,12 +6943,6 @@ "resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, "escodegen": { "version": "1.14.3", "resolved": "https://registry.npm.taobao.org/escodegen/download/escodegen-1.14.3.tgz?cache=0&sync_timestamp=1596669832613&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescodegen%2Fdownload%2Fescodegen-1.14.3.tgz", @@ -7819,12 +7715,6 @@ "function-bind": "^1.1.1" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, "has-symbols": { "version": "1.0.1", "resolved": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.1.tgz", @@ -8119,12 +8009,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz?cache=0&sync_timestamp=1586796260005&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-tokens%2Fdownload%2Fjs-tokens-4.0.0.tgz", - "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=", - "dev": true - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -9695,15 +9579,6 @@ "peek-readable": "^3.1.0" } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz?cache=0&sync_timestamp=1598611709087&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-5.5.0.tgz", - "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", From 231a0ad6fe1b21b0a5bfcd049166812b24c0ab78 Mon Sep 17 00:00:00 2001 From: SnowingFox <1503401882@qq.com> Date: Sat, 15 Jan 2022 13:12:29 +0800 Subject: [PATCH 2/5] =?UTF-8?q?feat(playlist=5Ftrack=5Fall):=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0offset=E5=81=8F=E7=A7=BB=E9=87=8F=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module/playlist_track_all.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/module/playlist_track_all.js b/module/playlist_track_all.js index 9c6ecce..3b7d749 100644 --- a/module/playlist_track_all.js +++ b/module/playlist_track_all.js @@ -10,6 +10,7 @@ module.exports = (query, request) => { //不放在data里面避免请求带上无用的数据 let limit = query.limit let offset = parseInt(query.offset) || 0 + let allOffset let trackIds let idsData = Object.create(null) @@ -24,7 +25,11 @@ module.exports = (query, request) => { if (typeof limit === 'undefined') { limit = trackIds.length } - + // 若offset超出最大偏移量则重置为最大偏移量 + allOffset = trackIds.length / limit - 1 + if (offset > allOffset) { + offset = allOffset + } trackIds.forEach((item, index) => { if (index >= limit * offset && index < limit * (offset + 1)) { ids.push(item.id) From 775cda8e242a358d83f2cd27f5278ff18a707fa8 Mon Sep 17 00:00:00 2001 From: SnowingFox <1503401882@qq.com> Date: Sat, 15 Jan 2022 13:14:12 +0800 Subject: [PATCH 3/5] =?UTF-8?q?feat(playlist=5Ftrack=5Fall):=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0offset=E5=81=8F=E7=A7=BB=E9=87=8F=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/README.md b/docs/README.md index 43a7d3f..01e2505 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1329,6 +1329,8 @@ tags: 歌单标签 > 你传入limit=10&offset=1,你会得到第11-20首歌曲 > > 如果你设置limit=10&offset=2,你就会得到第21-30首歌曲 +> +> 如果你offset超出了最大偏移量,即超出了`歌曲数量`/`limit`,则offset重置为最大偏移量 ### 歌单详情动态 From 10a0751b005e6bd95527a3a0de4207490340f24a Mon Sep 17 00:00:00 2001 From: SnowingFox <1503401882@qq.com> Date: Sat, 15 Jan 2022 13:17:43 +0800 Subject: [PATCH 4/5] =?UTF-8?q?feat(playlist=5Ftrack=5Fall):=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0offset=E5=81=8F=E7=A7=BB=E9=87=8F=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/README.md b/docs/README.md index 01e2505..9272f49 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1326,6 +1326,8 @@ tags: 歌单标签 > 注:关于`offset`,你可以这样理解,假设你当前的歌单有100首歌 > +> 你传入limit=10&offset=0等价于limit=10,你会得到第1-10首歌曲 +> > 你传入limit=10&offset=1,你会得到第11-20首歌曲 > > 如果你设置limit=10&offset=2,你就会得到第21-30首歌曲 From 4a941dd5e9f8ac68697cb6c2aa44cbb80cac6757 Mon Sep 17 00:00:00 2001 From: SnowingFox <1503401882@qq.com> Date: Sat, 15 Jan 2022 13:18:34 +0800 Subject: [PATCH 5/5] =?UTF-8?q?feat(playlist=5Ftrack=5Fall):=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0offset=E5=81=8F=E7=A7=BB=E9=87=8F=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 9272f49..45611d4 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1322,7 +1322,7 @@ tags: 歌单标签 **接口地址 :** `/playlist/track/all` -**调用例子 :** `/playlist/track/all?id=24381616&limit=10` +**调用例子 :** `/playlist/track/all?id=24381616&limit=10&offset=1` > 注:关于`offset`,你可以这样理解,假设你当前的歌单有100首歌 >