music-lab: Suno 응답 파싱 수정 — data.response.sunoData 경로로 트랙 추출
디버그 로그 제거. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -103,7 +103,6 @@ def run_suno_generation(task_id: str, params: dict) -> None:
|
|||||||
|
|
||||||
# ── 1단계: 곡 생성 요청 ──
|
# ── 1단계: 곡 생성 요청 ──
|
||||||
payload = _build_suno_payload(params)
|
payload = _build_suno_payload(params)
|
||||||
print(f"[SUNO DEBUG] generate payload: {payload}")
|
|
||||||
|
|
||||||
resp = requests.post(
|
resp = requests.post(
|
||||||
f"{SUNO_BASE_URL}/generate",
|
f"{SUNO_BASE_URL}/generate",
|
||||||
@@ -123,7 +122,6 @@ def run_suno_generation(task_id: str, params: dict) -> None:
|
|||||||
error=f"Suno API 거부: {body.get('msg', 'unknown error')}")
|
error=f"Suno API 거부: {body.get('msg', 'unknown error')}")
|
||||||
return
|
return
|
||||||
|
|
||||||
print(f"[SUNO DEBUG] generate response: {body}")
|
|
||||||
suno_task_id = body.get("data", {}).get("taskId", "")
|
suno_task_id = body.get("data", {}).get("taskId", "")
|
||||||
if not suno_task_id:
|
if not suno_task_id:
|
||||||
update_task(task_id, "failed", 0, "", error="Suno 응답에 taskId가 없습니다")
|
update_task(task_id, "failed", 0, "", error="Suno 응답에 taskId가 없습니다")
|
||||||
@@ -262,17 +260,12 @@ def _poll_until_complete(task_id: str, suno_task_id: str) -> Optional[list]:
|
|||||||
elif status == "FIRST_SUCCESS":
|
elif status == "FIRST_SUCCESS":
|
||||||
update_task(task_id, "processing", max(progress, 60), "첫 번째 트랙 완료, 두 번째 생성 중...")
|
update_task(task_id, "processing", max(progress, 60), "첫 번째 트랙 완료, 두 번째 생성 중...")
|
||||||
elif status == "SUCCESS":
|
elif status == "SUCCESS":
|
||||||
# 완료 — 트랙 추출 (디버깅용 print)
|
# data.response.sunoData 에 트랙 배열이 들어있음
|
||||||
import json as _json
|
response_obj = data.get("response", {})
|
||||||
print(f"[SUNO DEBUG] SUCCESS response body: {_json.dumps(body, ensure_ascii=False, default=str)[:2000]}")
|
tracks = response_obj.get("sunoData") or []
|
||||||
tracks = data.get("sunoData") or data.get("data") or data.get("tracks") or []
|
|
||||||
# data 자체가 리스트일 수도 있음
|
|
||||||
if not tracks and isinstance(data, list):
|
|
||||||
tracks = data
|
|
||||||
if tracks:
|
if tracks:
|
||||||
return tracks
|
return tracks
|
||||||
update_task(task_id, "failed", 0, "",
|
update_task(task_id, "failed", 0, "", error="Suno 생성 완료했으나 트랙 데이터 없음")
|
||||||
error=f"Suno 생성 완료했으나 트랙 데이터 없음 (keys: {list(data.keys())})")
|
|
||||||
return None
|
return None
|
||||||
elif status in error_statuses:
|
elif status in error_statuses:
|
||||||
error_msg = data.get("errorMessage") or data.get("msg") or f"Suno 생성 실패 ({status})"
|
error_msg = data.get("errorMessage") or data.get("msg") or f"Suno 생성 실패 ({status})"
|
||||||
|
|||||||
Reference in New Issue
Block a user