diff --git a/Netease-sync/server.js b/Netease-sync/server.js index b06a5df..e9f2895 100644 --- a/Netease-sync/server.js +++ b/Netease-sync/server.js @@ -551,6 +551,34 @@ async function processSong(song) { if (fallbackOk) return true; } + // 换源回退:kuwo -> qq + const fallbackSources = ['kuwo', 'qq'].filter(s => s !== source); + for (const fallbackSource of fallbackSources) { + console.log(`[Sync] Trying fallback source ${fallbackSource} for ${song.name}`); + const fallbackHit = await searchSongOnTuneHub(song.name, song.artist, fallbackSource); + if (!fallbackHit?.id) { + console.warn(`[Sync] No search hit from ${fallbackSource} for ${song.name}`); + continue; + } + + const fallbackHeaders = buildDownloadHeaders(fallbackSource); + const fallbackCandidates = buildDownloadCandidates( + fallbackSource, + fallbackHit.id, + fallbackHit.url, + fallbackHit.types + ); + + const fallbackOk = await tryDownloadWithCandidates( + song, + fallbackSource, + baseName, + fallbackCandidates, + fallbackHeaders + ); + if (fallbackOk) return true; + } + return false; // Failed }