From 5561bf24008a9d0d3ca32e438adf4d685dbbfe67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=B2=E6=82=A6?= Date: Tue, 13 Jan 2026 09:21:19 +0800 Subject: [PATCH] =?UTF-8?q?fix(Subsonic=20API):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=95=B0=E7=BB=84=E5=8F=82=E6=95=B0=E5=A4=84=E7=90=86=E5=92=8C?= =?UTF-8?q?=E6=92=AD=E6=94=BE=E5=88=97=E8=A1=A8=E6=9B=B4=E6=96=B0=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 改进Subsonic API请求中数组参数的处理方式,避免空值 添加播放列表更新时的日志输出 --- Netease-sync/server.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/Netease-sync/server.js b/Netease-sync/server.js index d6f5c17..a6c72d5 100644 --- a/Netease-sync/server.js +++ b/Netease-sync/server.js @@ -131,9 +131,19 @@ async function getSubsonicUrl(endpoint, params = {}) { ...params }; - const queryString = Object.entries(authParams) - .map(([key, value]) => `${key}=${encodeURIComponent(value)}`) - .join('&'); + const queryParts = []; + for (const [key, value] of Object.entries(authParams)) { + if (Array.isArray(value)) { + for (const item of value) { + if (item !== undefined && item !== null && item !== '') { + queryParts.push(`${key}=${encodeURIComponent(item)}`); + } + } + } else if (value !== undefined && value !== null && value !== '') { + queryParts.push(`${key}=${encodeURIComponent(value)}`); + } + } + const queryString = queryParts.join('&'); return `${NAVIDROME_URL}/rest/${endpoint}?${queryString}`; } @@ -517,7 +527,7 @@ async function createNavidromePlaylist(name, songIds = []) { try { const result = await callSubsonicAPI('createPlaylist', { name: name, - songId: songIds.join(',') + songId: songIds }); return result.playlist?.id; } catch (error) { @@ -528,9 +538,10 @@ async function createNavidromePlaylist(name, songIds = []) { async function updateNavidromePlaylist(playlistId, songIdsToAdd) { try { + console.log(`[Sync] Updating Navidrome playlist ${playlistId} with ${songIdsToAdd.length} songs`); await callSubsonicAPI('updatePlaylist', { playlistId: playlistId, - songIdToAdd: songIdsToAdd.join(',') + songIdToAdd: songIdsToAdd }); } catch (error) { console.error('Update playlist error:', error.message);