fix(album): 修复 kw 专辑接口——上游通道可用,故障为路由误传参数
This commit is contained in:
1 parent
23c7ad91e4
commit
b06769dbbd
5 files changed
+16
-6
No files matched your search
@@ -34,7 +34,7 @@ pnpm test # 运行冒烟测试(自动启动/关闭本地服务器)
|
|||||||
| `GET /singer/:source/:id` | 歌手信息(kg/tx/wy) |
|
| `GET /singer/:source/:id` | 歌手信息(kg/tx/wy) |
|
||||||
| `GET /singer/:source/:id/songs?page=1&limit=30` | 歌手歌曲列表(kg/tx/wy) |
|
| `GET /singer/:source/:id/songs?page=1&limit=30` | 歌手歌曲列表(kg/tx/wy) |
|
||||||
| `GET /singer/:source/:id/albums?page=1&limit=10` | 歌手专辑列表(kg/tx/wy) |
|
| `GET /singer/:source/:id/albums?page=1&limit=10` | 歌手专辑列表(kg/tx/wy) |
|
||||||
| `GET /album/:source/:id?page=1` | 专辑详情与曲目(kg/mg) |
|
| `GET /album/:source/:id?page=1` | 专辑详情与曲目(kg/kw/mg) |
|
||||||
| `GET /sources` | 平台列表(音质与能力) |
|
| `GET /sources` | 平台列表(音质与能力) |
|
||||||
| `GET /health` | 健康检查 |
|
| `GET /health` | 健康检查 |
|
||||||
| `GET /docs` `/redoc` `/openapi.json` | 接口文档(Swagger UI / ReDoc / OpenAPI 3.1) |
|
| `GET /docs` `/redoc` `/openapi.json` | 接口文档(Swagger UI / ReDoc / OpenAPI 3.1) |
|
||||||
|
|||||||
+1
-1
@@ -71,7 +71,7 @@
|
|||||||
| GET | `/singer/:source/:id` | 歌手信息(name/desc/avatar 与歌曲/专辑数量)。支持 kg/tx/wy |
|
| GET | `/singer/:source/:id` | 歌手信息(name/desc/avatar 与歌曲/专辑数量)。支持 kg/tx/wy |
|
||||||
| GET | `/singer/:source/:id/songs` | 歌手歌曲列表;可带 `page`/`limit`(默认 20)。支持 kg/tx/wy |
|
| GET | `/singer/:source/:id/songs` | 歌手歌曲列表;可带 `page`/`limit`(默认 20)。支持 kg/tx/wy |
|
||||||
| GET | `/singer/:source/:id/albums` | 歌手专辑列表;可带 `page`/`limit`。支持 kg/tx/wy |
|
| GET | `/singer/:source/:id/albums` | 歌手专辑列表;可带 `page`/`limit`。支持 kg/tx/wy |
|
||||||
| GET | `/album/:source/:id` | 专辑详情与曲目列表;可带 `page`/`limit`(limit 仅 kg 生效)。支持 kg/mg;kw 专辑上游接口已失效暂不支持 |
|
| GET | `/album/:source/:id` | 专辑详情与曲目列表;可带 `page`/`limit`(limit 仅 kg 生效,kw 单页固定 1000 条)。支持 kg/kw/mg |
|
||||||
|
|
||||||
歌手/专辑 id 来源:搜索结果条目包含 `albumId`;歌手 id 需从平台方获取(不在搜索结果中)。
|
歌手/专辑 id 来源:搜索结果条目包含 `albumId`;歌手 id 需从平台方获取(不在搜索结果中)。
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import { apis } from '../api-source.ts'
|
|||||||
import songList from './songList.ts'
|
import songList from './songList.ts'
|
||||||
import hotSearch from './hotSearch.ts'
|
import hotSearch from './hotSearch.ts'
|
||||||
import comment from './comment.ts'
|
import comment from './comment.ts'
|
||||||
|
import album from './album.ts'
|
||||||
import type { HttpRequestObject } from '../types.ts'
|
import type { HttpRequestObject } from '../types.ts'
|
||||||
|
|
||||||
const kw = {
|
const kw = {
|
||||||
@@ -16,6 +17,7 @@ const kw = {
|
|||||||
_musicInfoPromiseCancelFn: null,
|
_musicInfoPromiseCancelFn: null,
|
||||||
_musicPicRequestObj: null as HttpRequestObject | null,
|
_musicPicRequestObj: null as HttpRequestObject | null,
|
||||||
_musicPicPromiseCancelFn: null,
|
_musicPicPromiseCancelFn: null,
|
||||||
|
album,
|
||||||
// context: null,
|
// context: null,
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+5
-4
@@ -336,7 +336,7 @@ export const musicRoutes = async(fastify) => {
|
|||||||
fastify.get('/album/:source/:id', {
|
fastify.get('/album/:source/:id', {
|
||||||
schema: {
|
schema: {
|
||||||
summary: '获取专辑详情与曲目列表',
|
summary: '获取专辑详情与曲目列表',
|
||||||
description: '支持 kg/mg(见 /sources 的 album 能力位)。kw 的专辑上游接口已失效暂不支持。',
|
description: '支持 kg/kw/mg(见 /sources 的 album 能力位)。kw 单页固定 1000 条、limit 不生效。',
|
||||||
tags: ['歌手专辑'],
|
tags: ['歌手专辑'],
|
||||||
params: params({ source: pSource('album'), id: { type: 'string', description: '平台专辑 id(搜索结果中的 albumId)' } }),
|
params: params({ source: pSource('album'), id: { type: 'string', description: '平台专辑 id(搜索结果中的 albumId)' } }),
|
||||||
querystring: qs({ page: pPage, limit: pLimit }),
|
querystring: qs({ page: pPage, limit: pLimit }),
|
||||||
@@ -346,9 +346,10 @@ export const musicRoutes = async(fastify) => {
|
|||||||
const { source, id } = request.params
|
const { source, id } = request.params
|
||||||
const { page, limit } = request.query
|
const { page, limit } = request.query
|
||||||
const album = getSource(musicSdk, source, 'album').album
|
const album = getSource(musicSdk, source, 'album').album
|
||||||
// kg/mg 为 getAlbumDetail(id, page, limit),其他平台适配器如只提供 getAlbumListDetail(id, page) 也可接入
|
// 各平台适配器签名不同:kg/mg 为 getAlbumDetail(id, page, limit),
|
||||||
const fn = album.getAlbumDetail || album.getAlbumListDetail
|
// kw 为 getAlbumListDetail(id, page)——第三参数是 retryNum,不能透传 limit
|
||||||
return fn.call(album, id, page, limit).catch(err => { throw upstream(err.message) })
|
if (album.getAlbumDetail) return album.getAlbumDetail(id, page, limit).catch(err => { throw upstream(err.message) })
|
||||||
|
return album.getAlbumListDetail(id, page).catch(err => { throw upstream(err.message) })
|
||||||
})
|
})
|
||||||
|
|
||||||
// ---------- 系统 ----------
|
// ---------- 系统 ----------
|
||||||
|
|||||||
@@ -264,6 +264,13 @@ await test('专辑详情 /album/kg', async() => {
|
|||||||
return `${r.data.info.name}(${r.data.list.length} 首)`
|
return `${r.data.info.name}(${r.data.list.length} 首)`
|
||||||
})
|
})
|
||||||
|
|
||||||
|
await test('专辑详情 /album/kw', async() => {
|
||||||
|
const r = await get('/album/kw/29218')
|
||||||
|
if (r.code != 0) throw new Error(r.msg)
|
||||||
|
if (!r.data?.info?.name || !r.data?.list?.length) throw new Error('响应不完整')
|
||||||
|
return `${r.data.info.name}(${r.data.list.length} 首)`
|
||||||
|
})
|
||||||
|
|
||||||
await test('专辑详情 /album/mg', async() => {
|
await test('专辑详情 /album/mg', async() => {
|
||||||
const r = await get('/album/mg/25578')
|
const r = await get('/album/mg/25578')
|
||||||
if (r.code != 0) throw new Error(r.msg)
|
if (r.code != 0) throw new Error(r.msg)
|
||||||
|
|||||||
Reference in new issue
Block a user