style: normalize python formatting gates
This commit is contained in:
+28
-18
@@ -4,13 +4,22 @@ from datetime import datetime, timezone
|
||||
|
||||
from app.config import get_settings
|
||||
from app.core.storage import get_minio_service
|
||||
|
||||
from packages.adapters.sqlalchemy_impl.asset_repository import SQLAlchemyAssetRepository
|
||||
from packages.adapters.sqlalchemy_impl.generated_video_repository import (
|
||||
SQLAlchemyGeneratedVideoRepository,
|
||||
)
|
||||
from packages.adapters.sqlalchemy_impl.generation_task_repository import (
|
||||
SQLAlchemyGenerationTaskRepository,
|
||||
)
|
||||
from packages.adapters.sqlalchemy_impl.session import (
|
||||
SessionLocal,
|
||||
build_session_factory,
|
||||
)
|
||||
from packages.domain import GeneratedVideo, GenerationTaskStatus
|
||||
|
||||
from .celery_app import celery_app
|
||||
from .video_processing import VideoProcessor
|
||||
from packages.adapters.sqlalchemy_impl.session import SessionLocal, build_session_factory
|
||||
from packages.adapters.sqlalchemy_impl.generation_task_repository import SQLAlchemyGenerationTaskRepository
|
||||
from packages.adapters.sqlalchemy_impl.generated_video_repository import SQLAlchemyGeneratedVideoRepository
|
||||
from packages.adapters.sqlalchemy_impl.asset_repository import SQLAlchemyAssetRepository
|
||||
from packages.domain import GeneratedVideo, GenerationTaskStatus
|
||||
|
||||
settings = get_settings()
|
||||
if SessionLocal is None:
|
||||
@@ -21,7 +30,7 @@ if SessionLocal is None:
|
||||
def generate_video(task_id: str) -> dict:
|
||||
session = SessionLocal()
|
||||
temp_dir = tempfile.mkdtemp()
|
||||
|
||||
|
||||
try:
|
||||
task_repo = SQLAlchemyGenerationTaskRepository(session)
|
||||
video_repo = SQLAlchemyGeneratedVideoRepository(session)
|
||||
@@ -44,7 +53,7 @@ def generate_video(task_id: str) -> dict:
|
||||
assets = asset_repo.list_by_library(task.asset_library_id)
|
||||
if not assets:
|
||||
raise RuntimeError(f"No assets found in library {task.asset_library_id}")
|
||||
|
||||
|
||||
task.progress = 20.0
|
||||
task_repo.update(task)
|
||||
session.commit()
|
||||
@@ -53,13 +62,13 @@ def generate_video(task_id: str) -> dict:
|
||||
video_assets = [a for a in assets if a.mime_type.startswith("video/")][:3]
|
||||
if not video_assets:
|
||||
raise RuntimeError("No video assets found")
|
||||
|
||||
|
||||
local_paths = []
|
||||
for i, asset in enumerate(video_assets):
|
||||
local_path = os.path.join(temp_dir, f"input_{i}.mp4")
|
||||
storage_service.download_file(asset.storage_key, local_path)
|
||||
local_paths.append(local_path)
|
||||
|
||||
|
||||
task.progress = 20.0 + (i + 1) * 10.0
|
||||
task_repo.update(task)
|
||||
session.commit()
|
||||
@@ -68,18 +77,18 @@ def generate_video(task_id: str) -> dict:
|
||||
processor = VideoProcessor(temp_dir=temp_dir)
|
||||
output_filename = f"{task.id}.mp4"
|
||||
output_path = os.path.join(temp_dir, output_filename)
|
||||
|
||||
|
||||
task.progress = 50.0
|
||||
task_repo.update(task)
|
||||
session.commit()
|
||||
|
||||
|
||||
result = processor.concatenate_videos(
|
||||
input_paths=local_paths,
|
||||
output_path=output_path,
|
||||
resolution=(1920, 1080),
|
||||
fps=25,
|
||||
)
|
||||
|
||||
|
||||
task.progress = 80.0
|
||||
task_repo.update(task)
|
||||
session.commit()
|
||||
@@ -87,13 +96,13 @@ def generate_video(task_id: str) -> dict:
|
||||
# 6. 上传到 MinIO
|
||||
storage_key = f"workspaces/{task.workspace_id}/projects/{task.project_id}/generated/{task.id}/{output_filename}"
|
||||
thumbnail_key = f"workspaces/{task.workspace_id}/projects/{task.project_id}/generated/{task.id}/thumbnail.jpg"
|
||||
|
||||
|
||||
storage_service.upload_file(result.output_path, storage_key)
|
||||
storage_service.upload_file(result.thumbnail_path, thumbnail_key)
|
||||
|
||||
|
||||
file_url = storage_service.get_url(storage_key)
|
||||
thumbnail_url = storage_service.get_url(thumbnail_key)
|
||||
|
||||
|
||||
task.progress = 90.0
|
||||
task_repo.update(task)
|
||||
session.commit()
|
||||
@@ -130,7 +139,7 @@ def generate_video(task_id: str) -> dict:
|
||||
"duration": result.duration,
|
||||
"file_size": result.file_size,
|
||||
}
|
||||
|
||||
|
||||
except Exception as error:
|
||||
try:
|
||||
task_repo = SQLAlchemyGenerationTaskRepository(session)
|
||||
@@ -143,14 +152,15 @@ def generate_video(task_id: str) -> dict:
|
||||
session.commit()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
return {"ok": False, "task_id": task_id, "error": str(error)}
|
||||
|
||||
|
||||
finally:
|
||||
session.close()
|
||||
# 清理临时文件
|
||||
try:
|
||||
import shutil
|
||||
|
||||
shutil.rmtree(temp_dir, ignore_errors=True)
|
||||
except:
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user