From 327d0b4e8149ea31cb76d0b158e318f6f5a7aad2 Mon Sep 17 00:00:00 2001 From: gahusb Date: Fri, 1 May 2026 12:01:59 +0900 Subject: [PATCH] =?UTF-8?q?fix(music-lab):=20VIDEO=5FDATA=5FDIR=20?= =?UTF-8?q?=EA=B8=B0=EB=B3=B8=EA=B0=92=20=ED=86=B5=EC=9D=BC=20+=20lazy=20i?= =?UTF-8?q?mport=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - VIDEO_DATA_DIR 기본값을 /app/data/videos로 수정 (기존 /app/data에 videos 서브디렉토리를 중복 붙이던 버그 수정) - delete_project, export_project의 경로에서 중복된 "videos" 서브디렉토리 제거 - create_project 내부의 get_track_by_id lazy import를 파일 상단 import 블록으로 이동 --- music-lab/app/main.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/music-lab/app/main.py b/music-lab/app/main.py index ddf8931..0d9aa1c 100644 --- a/music-lab/app/main.py +++ b/music-lab/app/main.py @@ -10,7 +10,7 @@ from pydantic import BaseModel from .db import ( init_db, create_task, get_task, - get_all_tracks, add_track, delete_track, get_track_file_path, get_track_by_task_id, + get_all_tracks, add_track, delete_track, get_track_file_path, get_track_by_task_id, get_track_by_id, update_track_duration, update_track_file_info, update_track_hash, get_all_lyrics, add_lyrics, update_lyrics, delete_lyrics, create_video_project, get_video_project, get_all_video_projects, @@ -39,7 +39,7 @@ app.add_middleware( ) MUSIC_DATA_DIR = "/app/data" -VIDEO_DATA_DIR = os.getenv("VIDEO_DATA_DIR", "/app/data") +VIDEO_DATA_DIR = os.getenv("VIDEO_DATA_DIR", "/app/data/videos") def _get_mp3_duration(file_path: str) -> Optional[int]: @@ -712,7 +712,6 @@ class RevenueUpdate(BaseModel): @app.post("/api/music/video-project", status_code=201) def create_project(req: VideoProjectCreate, background_tasks: BackgroundTasks): - from .db import get_track_by_id if not get_track_by_id(req.track_id): raise HTTPException(status_code=404, detail="Track not found") if req.format not in ("visualizer", "slideshow"): @@ -753,7 +752,7 @@ def export_project(project_id: int): raise HTTPException(status_code=404, detail="Project not found") if proj["status"] != "done": raise HTTPException(status_code=400, detail=f"렌더링 미완료 (status: {proj['status']})") - meta_path = os.path.join(VIDEO_DATA_DIR, "videos", str(project_id), "metadata.json") + meta_path = os.path.join(VIDEO_DATA_DIR, str(project_id), "metadata.json") metadata = {} if os.path.exists(meta_path): with open(meta_path, encoding="utf-8") as f: @@ -774,7 +773,7 @@ def export_project(project_id: int): def delete_project(project_id: int): if not get_video_project(project_id): raise HTTPException(status_code=404, detail="Project not found") - out_dir = os.path.join(VIDEO_DATA_DIR, "videos", str(project_id)) + out_dir = os.path.join(VIDEO_DATA_DIR, str(project_id)) if os.path.isdir(out_dir): shutil.rmtree(out_dir, ignore_errors=True) delete_video_project(project_id)