feat(上游): 新增多级行政区划和指定维度音乐排行榜接口

This commit is contained in:
ElyPrism 2026-05-22 19:59:42 +08:00
parent 64d4847350
commit 3980d09bcd
No known key found for this signature in database
7 changed files with 146 additions and 85 deletions

View File

@ -20,7 +20,7 @@ jobs:
- name: Setup Node.js for NPM
uses: actions/setup-node@v6
with:
node-version: 20
node-version: 24
registry-url: 'https://registry.npmjs.org'
- run: npm install
- name: Publish to NPM
@ -30,7 +30,7 @@ jobs:
- name: Setup Node.js for GitHub Packages
uses: actions/setup-node@v6
with:
node-version: 20
node-version: 24
registry-url: 'https://npm.pkg.github.com'
- name: Publish to GitHub Packages
run: npm publish --access public

11
module/chart_detail.js Normal file
View File

@ -0,0 +1,11 @@
// 获取指定维度音乐排行榜详情
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
chartCode: query.chartCode,
targetId: query.targetId,
targetType: query.targetType,
}
return request(`/api/chart/detail`, data, createOption(query))
}

View File

@ -0,0 +1,11 @@
// 获取指定维度音乐排行榜列表
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
chartCode: query.chartCode,
targetId: query.targetId,
targetType: query.targetType,
}
return request(`/api/chart/song/detail`, data, createOption(query))
}

9
module/lbs_city_code.js Normal file
View File

@ -0,0 +1,9 @@
// 多级行政区划数据获取接口
const createOption = require('../util/option.js')
module.exports = (query, request) => {
const data = {
bizCode: query.bizCode || '',
}
return request(`/api/lbs/city/code`, data, createOption(query))
}

View File

@ -1,6 +1,6 @@
{
"name": "@neteasecloudmusicapienhanced/api",
"version": "4.32.1",
"version": "4.33.0",
"description": "全网最全的网易云音乐API接口 || A revival project for NeteaseCloudMusicApi Node.js Services (Half Refactor & Enhanced) || 网易云音乐 API 备份 + 增强 || 本项目自原版v4.28.0版本后开始自行维护",
"scripts": {
"dev": "nodemon app.js",
@ -88,8 +88,8 @@
"@types/express-fileupload": "^1.5.1",
"@types/mocha": "^10.0.10",
"@types/node": "25.5.0",
"@typescript-eslint/eslint-plugin": "^8.59.3",
"@typescript-eslint/parser": "^8.59.3",
"@typescript-eslint/eslint-plugin": "^8.59.4",
"@typescript-eslint/parser": "^8.59.4",
"eslint": "^9.39.4",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-html": "^8.1.4",
@ -98,7 +98,7 @@
"husky": "^9.1.7",
"intelli-espower-loader": "^1.1.0",
"lint-staged": "^16.4.0",
"mocha": "^11.7.5",
"mocha": "^11.7.6",
"nodemon": "^3.1.14",
"pkg": "^5.8.1",
"power-assert": "^1.6.1",

158
pnpm-lock.yaml generated
View File

@ -73,11 +73,11 @@ importers:
specifier: 25.5.0
version: 25.5.0
'@typescript-eslint/eslint-plugin':
specifier: ^8.59.3
version: 8.59.3(@typescript-eslint/parser@8.59.3(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)
specifier: ^8.59.4
version: 8.59.4(@typescript-eslint/parser@8.59.4(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)
'@typescript-eslint/parser':
specifier: ^8.59.3
version: 8.59.3(eslint@9.39.4)(typescript@5.9.3)
specifier: ^8.59.4
version: 8.59.4(eslint@9.39.4)(typescript@5.9.3)
eslint:
specifier: ^9.39.4
version: 9.39.4
@ -103,8 +103,8 @@ importers:
specifier: ^16.4.0
version: 16.4.0
mocha:
specifier: ^11.7.5
version: 11.7.5
specifier: ^11.7.6
version: 11.7.6
nodemon:
specifier: ^3.1.14
version: 3.1.14
@ -301,63 +301,63 @@ packages:
'@types/serve-static@2.2.0':
resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==}
'@typescript-eslint/eslint-plugin@8.59.3':
resolution: {integrity: sha512-PwFvSKsXGShKGW6n5bZOhGHEcCZXM8HofLK9fNsEwZXzFRjoY+XT1Vsf1zgyXdwTr0ZYz1/2tkZ0DBTT9jZjhw==}
'@typescript-eslint/eslint-plugin@8.59.4':
resolution: {integrity: sha512-PegsU+XfyJJNjd4+u/k6f9yTyp0lEXXiPopUNobZcIAUJFGICFLN+sP0Rb3JehVmiij1Ph0dFGYqODoRo/2+6A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@typescript-eslint/parser': ^8.59.3
'@typescript-eslint/parser': ^8.59.4
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
'@typescript-eslint/parser@8.59.3':
resolution: {integrity: sha512-HPwA+hVkfcriajbNvTmZv4VRauibay+cWArYUYq7u7W7PmGShMxbPxLvrwDme55a6d5alG3nrYfhyJ/G28XlLg==}
'@typescript-eslint/parser@8.59.4':
resolution: {integrity: sha512-zORHqO/tuhxY1zWuTvMUqddRxpiFJ72xVfcNoWpqdLjs6lfPbuQBJuW4pk+49/uBMy7Ssr4bzgjiKmmDB1UbZQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
'@typescript-eslint/project-service@8.59.3':
resolution: {integrity: sha512-ECiUWa/KYRGDFUqTNehaRgzDshnJfkTABJxVemHk4ko22gcr0ukloKjWvyQ64g8YCV/UI47kN1dbmjf/GaQYng==}
'@typescript-eslint/project-service@8.59.4':
resolution: {integrity: sha512-Ly00Vu4oAacfDeHp2Zg85ioNG6l8HG+tN1D7J+xTHSxu9y0awYKJ2zH1rFBn8ZSfuGK+7FxK3Cgl3uAz0aZZLg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.1.0'
'@typescript-eslint/scope-manager@8.59.3':
resolution: {integrity: sha512-t2LvZnoEfzKtnPjgeEu41xw5gxq9mQVfYy4OoZ4Vlt0sk3JwxmhCca/AR7DwOiHrjWgjAj6as4AhRLKSDfvZIA==}
'@typescript-eslint/scope-manager@8.59.4':
resolution: {integrity: sha512-mUeR/3H1WrTAddJrwut8OoPjfauaztMQmRwV5fQTUyNVJCLiUXXe4lGEyYIL2oFDpP7UtgbGJXCt72wT0z2S3Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/tsconfig-utils@8.59.3':
resolution: {integrity: sha512-PcIJHjmaREXLgIAIzLnSY9VucEzz8FKXsRgFa1DmdGCK/5tJpW03TKJF01Q6VZd1lLdz2sIKPWaDUZN9dp//dw==}
'@typescript-eslint/tsconfig-utils@8.59.4':
resolution: {integrity: sha512-DLCpnKgD4alVxTBSKulK+gU1KCqOgUXfDRDXh2mZgzokQKa/70ax93I2uVO3m/LLvIAtWZIFoiifudmIqAxpMA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.1.0'
'@typescript-eslint/type-utils@8.59.3':
resolution: {integrity: sha512-g71d8QD8UaiHGvrJwyIS1hCX5r63w6Jll+4VEYhEAHXTDIqX1JgxhTAbEHtKntL9kuc4jRo7/GWw5xfCepSccQ==}
'@typescript-eslint/type-utils@8.59.4':
resolution: {integrity: sha512-uonTuPAAKr9XaBGqJ3LjYTh72zy5DyGesljO9gtmk/eFW0W1fRHjnwVYKB35Lm8d5Q5CluEW3gPHjTvZTmgrfA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
'@typescript-eslint/types@8.59.3':
resolution: {integrity: sha512-ePFoH0g4ludssdRFqqDxQePCxU4WQyRa9+XVwjm7yLn0FKhMeoetC+qBEEI1Eyb1pGSDveTIT09Bvw2WhlGayg==}
'@typescript-eslint/types@8.59.4':
resolution: {integrity: sha512-F1o7WJcCq+bc8dwcO/YsSEOudAH8RDtaOhM6wcAQhcUsFhnWQl81JKy48q1hoxAU0qrzM89+31GYh1515Zde3Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/typescript-estree@8.59.3':
resolution: {integrity: sha512-CbRjVRAf7Lr9Kr8RopKcbY45p2VfmmHrm0ygOCYFi7oU8q19m0Fs/6iHS7kNOmwpp+ob07ZVcAqlxUod9lYdmg==}
'@typescript-eslint/typescript-estree@8.59.4':
resolution: {integrity: sha512-F+RuOmcDXo4+TPdfd/TCLS3m2nw8gE9XXyZLrA3JBfaA5tz9TtdkyD3YJFmPxulyc2cKbEok/CvFE3MgSLWnag==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.1.0'
'@typescript-eslint/utils@8.59.3':
resolution: {integrity: sha512-JAvT14goBzRzzzZyqq3P9BLArIxTtQURUtFgQ/V7FO+eU+Gg6ES+5ymOPP1wRxXcxAYeivCk4uS3jCKWI1K8Zg==}
'@typescript-eslint/utils@8.59.4':
resolution: {integrity: sha512-cYXeNAUsG4lJo5dbc1FcKm+JwIWrj1/UpTORsC6tGMjEZ81DYcvIr9/ueikhMa/Y/gDQYGp+YX9/xQrXje5BJw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.1.0'
'@typescript-eslint/visitor-keys@8.59.3':
resolution: {integrity: sha512-f1UQF7ggd42YiwI5wGrRaPsa+P0CINBlrkLPmGfpq/u/I/oVtecoEIfFR9ag/oa1sLOsRNZ6xehf6qMZhQGBDg==}
'@typescript-eslint/visitor-keys@8.59.4':
resolution: {integrity: sha512-U3gxVaDVnuZKhSspW/MzMxE1kq7zOdc072FcSNoqA1I9p8HyKbBFfEHoWckBAMgNMph4MamwS5iTVzFmrnt8TQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@unblockneteasemusic/server@0.28.0':
@ -1708,8 +1708,8 @@ packages:
mkdirp-classic@0.5.3:
resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
mocha@11.7.5:
resolution: {integrity: sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig==}
mocha@11.7.6:
resolution: {integrity: sha512-nS9xOGbw2I3cjCpxwZAEJ9xK9lmJ08vEkQvLtz4du9ZrF9UrjRpeJGiIgl2Z+Qs++pmB4ecDe48Fwsh+j+j7xA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
@ -2032,8 +2032,8 @@ packages:
engines: {node: '>=10.13.0'}
hasBin: true
qs@6.15.1:
resolution: {integrity: sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==}
qs@6.15.2:
resolution: {integrity: sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==}
engines: {node: '>=0.6'}
queue-microtask@1.2.3:
@ -2149,8 +2149,8 @@ packages:
secure-json-parse@2.7.0:
resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==}
semver@7.8.0:
resolution: {integrity: sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==}
semver@7.8.1:
resolution: {integrity: sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==}
engines: {node: '>=10'}
hasBin: true
@ -2851,14 +2851,14 @@ snapshots:
'@types/http-errors': 2.0.5
'@types/node': 25.5.0
'@typescript-eslint/eslint-plugin@8.59.3(@typescript-eslint/parser@8.59.3(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)':
'@typescript-eslint/eslint-plugin@8.59.4(@typescript-eslint/parser@8.59.4(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.2
'@typescript-eslint/parser': 8.59.3(eslint@9.39.4)(typescript@5.9.3)
'@typescript-eslint/scope-manager': 8.59.3
'@typescript-eslint/type-utils': 8.59.3(eslint@9.39.4)(typescript@5.9.3)
'@typescript-eslint/utils': 8.59.3(eslint@9.39.4)(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.59.3
'@typescript-eslint/parser': 8.59.4(eslint@9.39.4)(typescript@5.9.3)
'@typescript-eslint/scope-manager': 8.59.4
'@typescript-eslint/type-utils': 8.59.4(eslint@9.39.4)(typescript@5.9.3)
'@typescript-eslint/utils': 8.59.4(eslint@9.39.4)(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.59.4
eslint: 9.39.4
ignore: 7.0.5
natural-compare: 1.4.0
@ -2867,41 +2867,41 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/parser@8.59.3(eslint@9.39.4)(typescript@5.9.3)':
'@typescript-eslint/parser@8.59.4(eslint@9.39.4)(typescript@5.9.3)':
dependencies:
'@typescript-eslint/scope-manager': 8.59.3
'@typescript-eslint/types': 8.59.3
'@typescript-eslint/typescript-estree': 8.59.3(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.59.3
'@typescript-eslint/scope-manager': 8.59.4
'@typescript-eslint/types': 8.59.4
'@typescript-eslint/typescript-estree': 8.59.4(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.59.4
debug: 4.4.3
eslint: 9.39.4
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
'@typescript-eslint/project-service@8.59.3(typescript@5.9.3)':
'@typescript-eslint/project-service@8.59.4(typescript@5.9.3)':
dependencies:
'@typescript-eslint/tsconfig-utils': 8.59.3(typescript@5.9.3)
'@typescript-eslint/types': 8.59.3
'@typescript-eslint/tsconfig-utils': 8.59.4(typescript@5.9.3)
'@typescript-eslint/types': 8.59.4
debug: 4.4.3
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
'@typescript-eslint/scope-manager@8.59.3':
'@typescript-eslint/scope-manager@8.59.4':
dependencies:
'@typescript-eslint/types': 8.59.3
'@typescript-eslint/visitor-keys': 8.59.3
'@typescript-eslint/types': 8.59.4
'@typescript-eslint/visitor-keys': 8.59.4
'@typescript-eslint/tsconfig-utils@8.59.3(typescript@5.9.3)':
'@typescript-eslint/tsconfig-utils@8.59.4(typescript@5.9.3)':
dependencies:
typescript: 5.9.3
'@typescript-eslint/type-utils@8.59.3(eslint@9.39.4)(typescript@5.9.3)':
'@typescript-eslint/type-utils@8.59.4(eslint@9.39.4)(typescript@5.9.3)':
dependencies:
'@typescript-eslint/types': 8.59.3
'@typescript-eslint/typescript-estree': 8.59.3(typescript@5.9.3)
'@typescript-eslint/utils': 8.59.3(eslint@9.39.4)(typescript@5.9.3)
'@typescript-eslint/types': 8.59.4
'@typescript-eslint/typescript-estree': 8.59.4(typescript@5.9.3)
'@typescript-eslint/utils': 8.59.4(eslint@9.39.4)(typescript@5.9.3)
debug: 4.4.3
eslint: 9.39.4
ts-api-utils: 2.5.0(typescript@5.9.3)
@ -2909,37 +2909,37 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/types@8.59.3': {}
'@typescript-eslint/types@8.59.4': {}
'@typescript-eslint/typescript-estree@8.59.3(typescript@5.9.3)':
'@typescript-eslint/typescript-estree@8.59.4(typescript@5.9.3)':
dependencies:
'@typescript-eslint/project-service': 8.59.3(typescript@5.9.3)
'@typescript-eslint/tsconfig-utils': 8.59.3(typescript@5.9.3)
'@typescript-eslint/types': 8.59.3
'@typescript-eslint/visitor-keys': 8.59.3
'@typescript-eslint/project-service': 8.59.4(typescript@5.9.3)
'@typescript-eslint/tsconfig-utils': 8.59.4(typescript@5.9.3)
'@typescript-eslint/types': 8.59.4
'@typescript-eslint/visitor-keys': 8.59.4
debug: 4.4.3
minimatch: 10.2.5
semver: 7.8.0
semver: 7.8.1
tinyglobby: 0.2.16
ts-api-utils: 2.5.0(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
'@typescript-eslint/utils@8.59.3(eslint@9.39.4)(typescript@5.9.3)':
'@typescript-eslint/utils@8.59.4(eslint@9.39.4)(typescript@5.9.3)':
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4)
'@typescript-eslint/scope-manager': 8.59.3
'@typescript-eslint/types': 8.59.3
'@typescript-eslint/typescript-estree': 8.59.3(typescript@5.9.3)
'@typescript-eslint/scope-manager': 8.59.4
'@typescript-eslint/types': 8.59.4
'@typescript-eslint/typescript-estree': 8.59.4(typescript@5.9.3)
eslint: 9.39.4
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
'@typescript-eslint/visitor-keys@8.59.3':
'@typescript-eslint/visitor-keys@8.59.4':
dependencies:
'@typescript-eslint/types': 8.59.3
'@typescript-eslint/types': 8.59.4
eslint-visitor-keys: 5.0.1
'@unblockneteasemusic/server@0.28.0':
@ -3092,7 +3092,7 @@ snapshots:
http-errors: 2.0.1
iconv-lite: 0.4.24
on-finished: 2.4.1
qs: 6.15.1
qs: 6.15.2
raw-body: 2.5.3
type-is: 1.6.18
unpipe: 1.0.0
@ -3107,7 +3107,7 @@ snapshots:
http-errors: 2.0.1
iconv-lite: 0.7.2
on-finished: 2.4.1
qs: 6.15.1
qs: 6.15.2
raw-body: 3.0.2
type-is: 2.1.0
transitivePeerDependencies:
@ -3803,7 +3803,7 @@ snapshots:
parseurl: 1.3.3
path-to-regexp: 0.1.13
proxy-addr: 2.0.7
qs: 6.15.1
qs: 6.15.2
range-parser: 1.2.1
safe-buffer: 5.2.1
send: 0.19.2
@ -3838,7 +3838,7 @@ snapshots:
once: 1.4.0
parseurl: 1.3.3
proxy-addr: 2.0.7
qs: 6.15.1
qs: 6.15.2
range-parser: 1.2.1
router: 2.2.0
send: 1.2.1
@ -4481,7 +4481,7 @@ snapshots:
mkdirp-classic@0.5.3: {}
mocha@11.7.5:
mocha@11.7.6:
dependencies:
browser-stdout: 1.3.1
chokidar: 4.0.3
@ -4549,7 +4549,7 @@ snapshots:
node-abi@3.92.0:
dependencies:
semver: 7.8.0
semver: 7.8.1
node-fetch@2.7.0:
dependencies:
@ -4569,7 +4569,7 @@ snapshots:
ignore-by-default: 1.0.1
minimatch: 10.2.5
pstree.remy: 1.1.8
semver: 7.8.0
semver: 7.8.1
simple-update-notifier: 2.0.0
supports-color: 5.5.0
touch: 3.1.1
@ -4744,7 +4744,7 @@ snapshots:
https-proxy-agent: 5.0.1
node-fetch: 2.7.0
progress: 2.0.3
semver: 7.8.0
semver: 7.8.1
tar-fs: 2.1.4
yargs: 16.2.0
transitivePeerDependencies:
@ -4894,7 +4894,7 @@ snapshots:
pngjs: 5.0.0
yargs: 15.4.1
qs@6.15.1:
qs@6.15.2:
dependencies:
side-channel: 1.1.0
@ -5038,7 +5038,7 @@ snapshots:
secure-json-parse@2.7.0: {}
semver@7.8.0: {}
semver@7.8.1: {}
send@0.19.2:
dependencies:
@ -5168,7 +5168,7 @@ snapshots:
simple-update-notifier@2.0.0:
dependencies:
semver: 7.8.0
semver: 7.8.1
slash@3.0.0: {}

View File

@ -5309,6 +5309,36 @@ let data = encodeURIComponent(
**调用例子 :* `/comment/report?id=2058263032&cid=123456789&reason=人身攻击`
### 多级行政区划数据
说明 : 调用此接口,可获取多级行政区划数据
**可选参数 :** `bizCode`: 业务类型,默认空字符串。传入 `chart` 时获取支持城市榜的城市列表,传空时获取所有城市列表
**接口地址 :** `/lbs/city/code`
**调用例子 :** `/lbs/city/code`
### 指定维度音乐排行榜详情
说明 : 调用此接口,可获取城市榜、城市风格榜等指定维度音乐排行榜详情
**必选参数 :**
`chartCode`: 榜单编码,如 `CITY_SONG_CHART``CITY_STYLE_SONG_CHART`
`targetId`: 目标 id,城市榜如 `110000`,城市风格榜如 北京华语流行榜 `110000_1020`。城市风格榜格式通常为 `城市 id_曲风 id`,其中曲风 id 可通过[曲风列表](#曲风列表)接口 `/style/list` 获取。城市榜的城市列表可通过[多级行政区划数据](#多级行政区划数据)接口传入 `bizCode=chart` 获取;城市风格榜的城市列表可通过该接口传空 `bizCode` 获取
`targetType`: 目标类型,如 `CITY``CITY_STYLE`
**接口地址 :** `/chart/detail`
**调用例子 :** `/chart/detail?chartCode=CITY_SONG_CHART&targetId=110000&targetType=CITY`
### 指定维度音乐排行榜列表
说明 : 调用此接口,可获取城市榜、城市风格榜等指定维度音乐排行榜歌曲列表
## 离线访问此文档
此文档同时也是 Progressive Web Apps(PWA), 加入了 serviceWorker, 可离线访问