결함 #530
open[결함] 노래방(TJ) 검색 미작동 — tjmedia 서버사이드 검색 → JS/AJAX 전환
100%
Description
tjmedia가 검색 결과를 정적 HTML이 아닌 JS/AJAX로 로드하도록 변경되어, /song/accompaniment?searchText= 가 검색어와 무관한 기본 목록을 반환함. 결과적으로 /karaoke가 항상 found:false(곡 제목 매칭 실패). curl·RestTemplate 무관한 기존 결함(#526 리팩토링 회귀 아님, 동작 동등). 조치案: tjmedia의 실제 AJAX/JSON 엔드포인트 역설계 또는 대체 노래방 소스. [AI 등록]
Updated by joungmin ko about 2 months ago
- Status changed from 신규 to 해결
- % Done changed from 0 to 100
수정 완료(커밋 c769cae).
원인 2가지: ① tjmedia가 제목검색을 정적HTML→JS 엔드포인트(/song/accompaniment_search?strType=1&searchTxt=)로 전환. ② scrapingRestTemplate.exchange(String)이 %인코딩 URL을 이중 인코딩(%EB→%25EB)해 searchTxt 무시→빈결과(모든 쿼리 45799바이트 동일). #526 curl→RestTemplate 전환의 잠복 버그.
조치: 새 엔드포인트로 재작성 + 새 grid-item 행 파싱(num2/title3/title4, Jsoup 추출) + java.net.URI 전달로 이중인코딩 제거 + Accept-Encoding:identity. youtube-id의 동일 이중인코딩 버그(한글 쿼리)도 함께 수정.
검증: 밤편지→48879, 신호등→76890, 좋은 날→33393 (found:true); /youtube-id ASCII·한글 모두 15 ids. [AI 조치]