fix(music-lab): VIDEO_DATA_DIR 기본값 통일 + lazy import 정리
- VIDEO_DATA_DIR 기본값을 /app/data/videos로 수정 (기존 /app/data에 videos 서브디렉토리를 중복 붙이던 버그 수정) - delete_project, export_project의 경로에서 중복된 "videos" 서브디렉토리 제거 - create_project 내부의 get_track_by_id lazy import를 파일 상단 import 블록으로 이동
This commit is contained in:
@@ -10,7 +10,7 @@ from pydantic import BaseModel
|
|||||||
from .db import (
|
from .db import (
|
||||||
init_db,
|
init_db,
|
||||||
create_task, get_task,
|
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,
|
update_track_duration, update_track_file_info, update_track_hash,
|
||||||
get_all_lyrics, add_lyrics, update_lyrics, delete_lyrics,
|
get_all_lyrics, add_lyrics, update_lyrics, delete_lyrics,
|
||||||
create_video_project, get_video_project, get_all_video_projects,
|
create_video_project, get_video_project, get_all_video_projects,
|
||||||
@@ -39,7 +39,7 @@ app.add_middleware(
|
|||||||
)
|
)
|
||||||
|
|
||||||
MUSIC_DATA_DIR = "/app/data"
|
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]:
|
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)
|
@app.post("/api/music/video-project", status_code=201)
|
||||||
def create_project(req: VideoProjectCreate, background_tasks: BackgroundTasks):
|
def create_project(req: VideoProjectCreate, background_tasks: BackgroundTasks):
|
||||||
from .db import get_track_by_id
|
|
||||||
if not get_track_by_id(req.track_id):
|
if not get_track_by_id(req.track_id):
|
||||||
raise HTTPException(status_code=404, detail="Track not found")
|
raise HTTPException(status_code=404, detail="Track not found")
|
||||||
if req.format not in ("visualizer", "slideshow"):
|
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")
|
raise HTTPException(status_code=404, detail="Project not found")
|
||||||
if proj["status"] != "done":
|
if proj["status"] != "done":
|
||||||
raise HTTPException(status_code=400, detail=f"렌더링 미완료 (status: {proj['status']})")
|
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 = {}
|
metadata = {}
|
||||||
if os.path.exists(meta_path):
|
if os.path.exists(meta_path):
|
||||||
with open(meta_path, encoding="utf-8") as f:
|
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):
|
def delete_project(project_id: int):
|
||||||
if not get_video_project(project_id):
|
if not get_video_project(project_id):
|
||||||
raise HTTPException(status_code=404, detail="Project not found")
|
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):
|
if os.path.isdir(out_dir):
|
||||||
shutil.rmtree(out_dir, ignore_errors=True)
|
shutil.rmtree(out_dir, ignore_errors=True)
|
||||||
delete_video_project(project_id)
|
delete_video_project(project_id)
|
||||||
|
|||||||
Reference in New Issue
Block a user