From 905b2c3c4226c943e224621c34a8f6e0b8e8a3a6 Mon Sep 17 00:00:00 2001 From: ikun0014 Date: Sun, 21 Jun 2026 10:31:46 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20kg=20=E6=BA=90=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=94=B9=E7=94=A8=20AndroidFilter=20=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=B9=B6=E6=8F=90=E4=BE=9B=20albumAudioId=20(#2849)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将搜索接口 platform 从 WebFilter 切换到 AndroidFilter,新接口返回 MixSongID(即 album_audio_id),用于后续歌词精确搜索。 - songmid 各处仍保持原取值(Audioid / audio_id)不变,避免影响 既有歌曲 id 与旧收藏/列表数据 - 所有歌曲列表产出点均新增 albumAudioId 字段: musicSearch(MixSongID)、songList 顶层(album_audio_id)、 songList 详情/leaderboard/musicInfo(audio_group_id / album_audio_id) - music.d.ts 的 MusicInfoMeta_kg 增加 albumAudioId 字段, tools.ts 新旧格式双向转换中保留,确保持久化后不丢失 Co-authored-by: Claude Opus 4.8 (1M context) --- src/common/types/music.d.ts | 1 + src/common/utils/tools.ts | 2 ++ src/renderer/utils/musicSdk/kg/leaderboard.js | 1 + src/renderer/utils/musicSdk/kg/musicInfo.js | 1 + src/renderer/utils/musicSdk/kg/musicSearch.js | 3 ++- src/renderer/utils/musicSdk/kg/songList.js | 2 ++ 6 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/common/types/music.d.ts b/src/common/types/music.d.ts index c09aad6d..efd2b1e3 100644 --- a/src/common/types/music.d.ts +++ b/src/common/types/music.d.ts @@ -58,6 +58,7 @@ declare namespace LX { qualitys: MusicQualityTypeKg[] _qualitys: _MusicQualityTypeKg hash: string // 歌曲hash + albumAudioId?: string // 专辑内歌曲ID(MixSongID),用于歌词精确搜索 } interface MusicInfo_kg extends MusicInfoBase<'kg'> { meta: MusicInfoMeta_kg diff --git a/src/common/utils/tools.ts b/src/common/utils/tools.ts index fa4da6d8..287b395c 100644 --- a/src/common/utils/tools.ts +++ b/src/common/utils/tools.ts @@ -35,6 +35,7 @@ export const toNewMusicInfo = (oldMusicInfo: any): LX.Music.MusicInfo => { switch (oldMusicInfo.source) { case 'kg': meta.hash = oldMusicInfo.hash + meta.albumAudioId = oldMusicInfo.albumAudioId newInfo.id = oldMusicInfo.songmid + '_' + oldMusicInfo.hash break case 'tx': @@ -79,6 +80,7 @@ export const toOldMusicInfo = (minfo: LX.Music.MusicInfo) => { switch (minfo.source) { case 'kg': oInfo.hash = minfo.meta.hash + oInfo.albumAudioId = minfo.meta.albumAudioId break case 'tx': oInfo.strMediaMid = minfo.meta.strMediaMid diff --git a/src/renderer/utils/musicSdk/kg/leaderboard.js b/src/renderer/utils/musicSdk/kg/leaderboard.js index d9821f29..155ae62f 100644 --- a/src/renderer/utils/musicSdk/kg/leaderboard.js +++ b/src/renderer/utils/musicSdk/kg/leaderboard.js @@ -132,6 +132,7 @@ export default { albumName: decodeName(item.remark), albumId: item.album_id, songmid: item.audio_id, + albumAudioId: item.album_audio_id, source: 'kg', interval: formatPlayTime(item.duration), img: null, diff --git a/src/renderer/utils/musicSdk/kg/musicInfo.js b/src/renderer/utils/musicSdk/kg/musicInfo.js index 9f826803..e05513d3 100644 --- a/src/renderer/utils/musicSdk/kg/musicInfo.js +++ b/src/renderer/utils/musicSdk/kg/musicInfo.js @@ -85,6 +85,7 @@ export const filterMusicInfoList = (rawList) => { albumName: decodeName(item.album_info.album_name), albumId: item.album_info.album_id, songmid: item.audio_info.audio_id, + albumAudioId: item.audio_info.audio_group_id, source: 'kg', interval: formatPlayTime(parseInt(item.audio_info.timelength) / 1000), img: null, diff --git a/src/renderer/utils/musicSdk/kg/musicSearch.js b/src/renderer/utils/musicSdk/kg/musicSearch.js index dabb7073..75bac6ce 100644 --- a/src/renderer/utils/musicSdk/kg/musicSearch.js +++ b/src/renderer/utils/musicSdk/kg/musicSearch.js @@ -9,7 +9,7 @@ export default { page: 0, allPage: 1, musicSearch(str, page, limit) { - const searchRequest = httpFetch(`https://songsearch.kugou.com/song_search_v2?keyword=${encodeURIComponent(str)}&page=${page}&pagesize=${limit}&userid=0&clientver=&platform=WebFilter&filter=2&iscorrection=1&privilege_filter=0&area_code=1`) + const searchRequest = httpFetch(`http://songsearch.kugou.com/song_search_v2?platform=AndroidFilter&iscorrection=1&keyword=${encodeURIComponent(str)}&hifiquality=0&pagesize=${limit}&PrivilegeFilter=0&page=${page}`) return searchRequest.promise.then(({ body }) => body) }, filterData(rawData) { @@ -53,6 +53,7 @@ export default { albumName: decodeName(rawData.AlbumName), albumId: rawData.AlbumID, songmid: rawData.Audioid, + albumAudioId: rawData.MixSongID, source: 'kg', interval: formatPlayTime(rawData.Duration), _interval: rawData.Duration, diff --git a/src/renderer/utils/musicSdk/kg/songList.js b/src/renderer/utils/musicSdk/kg/songList.js index 640f6079..9a6a4a2a 100644 --- a/src/renderer/utils/musicSdk/kg/songList.js +++ b/src/renderer/utils/musicSdk/kg/songList.js @@ -740,6 +740,7 @@ export default { albumName: decodeName(item.album_name), albumId: item.album_id, songmid: item.audio_id, + albumAudioId: item.album_audio_id, source: 'kg', interval: formatPlayTime(item.duration / 1000), img: null, @@ -863,6 +864,7 @@ export default { albumName: decodeName(item.album_info.album_name), albumId: item.album_info.album_id, songmid: item.audio_info.audio_id, + albumAudioId: item.audio_info.audio_group_id, source: 'kg', interval: formatPlayTime(parseInt(item.audio_info.timelength) / 1000), img: null,