diff --git a/music-lab/app/suno_provider.py b/music-lab/app/suno_provider.py index 8f8ccb4..005924e 100644 --- a/music-lab/app/suno_provider.py +++ b/music-lab/app/suno_provider.py @@ -10,7 +10,11 @@ import logging import requests from typing import Optional -from .db import update_task, add_track +from .db import ( + update_task, add_track, + update_track_cover_images, update_track_wav_url, + update_track_video_url, update_track_stem_urls, +) logger = logging.getLogger(__name__) @@ -581,6 +585,8 @@ def run_cover_image(task_id: str, params: dict) -> None: elif isinstance(img, dict): image_urls.append(img.get("imageUrl") or img.get("image_url", "")) update_task(task_id, "succeeded", 100, "커버 이미지 생성 완료", audio_url=json.dumps(image_urls)) + if params.get("track_id") and image_urls: + update_track_cover_images(params["track_id"], image_urls) except Exception as e: logger.exception("Cover image generation error for task %s", task_id) update_task(task_id, "failed", 0, "", error=str(e)) @@ -615,6 +621,8 @@ def run_wav_convert(task_id: str, params: dict) -> None: wav_url = body.get("data", {}).get("audioWavUrl", "") if wav_url: update_task(task_id, "succeeded", 100, "WAV 변환 완료 (캐시)", audio_url=wav_url) + if params.get("track_id") and wav_url: + update_track_wav_url(params["track_id"], wav_url) return if resp.status_code != 200: @@ -645,6 +653,8 @@ def run_wav_convert(task_id: str, params: dict) -> None: wav_url = response.get("audioWavUrl", "") update_task(task_id, "succeeded", 100, "WAV 변환 완료", audio_url=wav_url) + if params.get("track_id") and wav_url: + update_track_wav_url(params["track_id"], wav_url) except Exception as e: logger.exception("WAV convert error for task %s", task_id) @@ -711,6 +721,8 @@ def run_stem_split(task_id: str, params: dict) -> None: update_task(task_id, "succeeded", 100, "12스템 분리 완료", audio_url=json.dumps(stems)) + if params.get("track_id") and stems: + update_track_stem_urls(params["track_id"], stems) except Exception as e: logger.exception("Stem split error for task %s", task_id) @@ -1030,6 +1042,8 @@ def run_video_generate(task_id: str, params: dict) -> None: video_url = response.get("video_url") or response.get("videoUrl", "") update_task(task_id, "succeeded", 100, "뮤직비디오 생성 완료", audio_url=video_url) + if params.get("track_id") and video_url: + update_track_video_url(params["track_id"], video_url) except Exception as e: logger.exception("Video generate error for task %s", task_id)