diff --git a/Netease-sync/server.js b/Netease-sync/server.js index e9f2895..a2b3754 100644 --- a/Netease-sync/server.js +++ b/Netease-sync/server.js @@ -353,6 +353,13 @@ function buildDownloadCandidates(source, songId, songUrl, types) { return candidates; } +function formatSongLog(song, source) { + const name = song?.name || 'unknown'; + const id = song?.id || 'unknown'; + const src = source || song?.source || 'unknown'; + return `${name} (id=${id}, source=${src})`; +} + async function tryDownloadWithCandidates(song, source, baseName, candidates, downloadHeaders) { const tried = new Set(); @@ -362,7 +369,7 @@ async function tryDownloadWithCandidates(song, source, baseName, candidates, dow const directUrl = await resolveTuneHubAudioUrl(candidate.apiUrl); if (!directUrl) { - console.warn(`[Sync] Failed to resolve audio url for ${song.name} (${candidate.label})`); + console.warn(`[Sync] Failed to resolve audio url for ${formatSongLog(song, source)} (${candidate.label}) api=${candidate.apiUrl}`); continue; } @@ -412,7 +419,7 @@ async function tryDownloadWithCandidates(song, source, baseName, candidates, dow return true; // Downloaded (fallback) } } catch (err) { - console.error(`[Sync] Download failed for ${song.name} (${candidate.label}):`, err.message); + console.error(`[Sync] Download failed for ${formatSongLog(song, source)} (${candidate.label}) url=${directUrl}:`, err.message); if (fs.existsSync(tempFile)) fs.unlinkSync(tempFile); } }