11import { FastifyInstance , FastifyRequest , FastifyReply } from "fastify" ;
2- import { SongUrlResult } from "./unblock" ;
2+ import type { SongUrlResult } from "./unblock" ;
33import { serverLog } from "../../main/logger" ;
44import axios from "axios" ;
55import getKuwoSongUrl from "./kuwo" ;
@@ -51,15 +51,29 @@ export const initUnblockAPI = async (fastify: FastifyInstance) => {
5151 return reply . send ( result ) ;
5252 } ,
5353 ) ;
54+ // 构造匹配信息(fallback 用 lastIndexOf 兼容歌名含连字符的情况)
55+ const buildMatchInfo = ( query : { [ key : string ] : string } ) => {
56+ let songName = query . songName || "" ;
57+ let artist = query . artist || "" ;
58+ if ( ! songName && query . keyword ) {
59+ const lastIdx = query . keyword . lastIndexOf ( "-" ) ;
60+ if ( lastIdx > 0 ) {
61+ songName = query . keyword . slice ( 0 , lastIdx ) . trim ( ) ;
62+ artist = artist || query . keyword . slice ( lastIdx + 1 ) . trim ( ) ;
63+ } else {
64+ songName = query . keyword . trim ( ) ;
65+ }
66+ }
67+ return { keyword : query . keyword || "" , songName, artist } ;
68+ } ;
5469 // kuwo
5570 fastify . get (
5671 "/unblock/kuwo" ,
5772 async (
5873 req : FastifyRequest < { Querystring : { [ key : string ] : string } } > ,
5974 reply : FastifyReply ,
6075 ) => {
61- const { keyword } = req . query ;
62- const result = await getKuwoSongUrl ( keyword ) ;
76+ const result = await getKuwoSongUrl ( buildMatchInfo ( req . query ) ) ;
6377 return reply . send ( result ) ;
6478 } ,
6579 ) ;
@@ -70,8 +84,7 @@ export const initUnblockAPI = async (fastify: FastifyInstance) => {
7084 req : FastifyRequest < { Querystring : { [ key : string ] : string } } > ,
7185 reply : FastifyReply ,
7286 ) => {
73- const { keyword } = req . query ;
74- const result = await getBodianSongUrl ( keyword ) ;
87+ const result = await getBodianSongUrl ( buildMatchInfo ( req . query ) ) ;
7588 return reply . send ( result ) ;
7689 } ,
7790 ) ;
@@ -82,8 +95,7 @@ export const initUnblockAPI = async (fastify: FastifyInstance) => {
8295 req : FastifyRequest < { Querystring : { [ key : string ] : string } } > ,
8396 reply : FastifyReply ,
8497 ) => {
85- const { keyword } = req . query ;
86- const result = await getGequbaoSongUrl ( keyword ) ;
98+ const result = await getGequbaoSongUrl ( buildMatchInfo ( req . query ) ) ;
8799 return reply . send ( result ) ;
88100 } ,
89101 ) ;
0 commit comments