fix(YoutubeMusic): 검색 0건 버그 수정 - 만료된 고정 params 제거 + itemSectionRenderer 결과 파싱 + 커버/MR/노래방 후순위 정렬
This commit is contained in:
@@ -107,8 +107,9 @@ export const YoutubeMusic = {
|
|||||||
gl: "KR"
|
gl: "KR"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
query: query,
|
query: query
|
||||||
params: "EgWKAQIIAWoOEAMQBBAQEAkQFRAKEBE="
|
// NOTE: 과거의 고정 params("EgW...")는 YTM에서 "검색결과 없음"을 유발하므로 제거.
|
||||||
|
// 필터 없이 요청하면 상단 Top Result(musicCardShelfRenderer) + 곡 목록이 함께 온다.
|
||||||
}),
|
}),
|
||||||
...(proxy ? { dispatcher: proxy } : {})
|
...(proxy ? { dispatcher: proxy } : {})
|
||||||
});
|
});
|
||||||
@@ -157,9 +158,9 @@ export const YoutubeMusic = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. 일반 검색 결과 목록 파싱
|
// 2. 일반 검색 결과 목록 파싱 (곡은 musicShelfRenderer 또는 itemSectionRenderer 하위에 위치)
|
||||||
if (section.musicShelfRenderer) {
|
{
|
||||||
const items = section.musicShelfRenderer.contents || [];
|
const items = section.musicShelfRenderer?.contents ?? section.itemSectionRenderer?.contents ?? [];
|
||||||
|
|
||||||
for (const item of items) {
|
for (const item of items) {
|
||||||
const track = item.musicResponsiveListItemRenderer;
|
const track = item.musicResponsiveListItemRenderer;
|
||||||
@@ -201,7 +202,12 @@ export const YoutubeMusic = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return results;
|
// YTM이 필터 없는 검색에서 커버/MR/노래방/라이브를 상위로 올리는 경우가 있어,
|
||||||
|
// 명백한 2차 창작물은 뒤로 보낸다(원곡 우선). 동점이면 원래 순서 유지(안정 정렬).
|
||||||
|
const junk = /(\bMR\b|inst(?:rumental)?|instrumental|karaoke|노래방|\bcover\b|커버|nightcore|sped ?up|slowed|8d audio|리믹스|remix|male version|남자\s?버전|여자\s?버전|가사|lyrics?)/i;
|
||||||
|
const scored = results.map((r, i) => ({ r, i, junk: junk.test(r.title) ? 1 : 0 }));
|
||||||
|
scored.sort((a, b) => a.junk - b.junk || a.i - b.i);
|
||||||
|
return scored.map((s) => s.r);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
Logger.error(`❌ getSearchFull 실행 중 에러: ${String(error)}`);
|
Logger.error(`❌ getSearchFull 실행 중 에러: ${String(error)}`);
|
||||||
return [];
|
return [];
|
||||||
|
|||||||
Reference in New Issue
Block a user