major refactor

This commit is contained in:
2026-03-13 01:07:02 -03:00
parent eaaf2ad60c
commit 3eeedebb15
61 changed files with 441 additions and 242 deletions

View File

@@ -0,0 +1,59 @@
"""
MediaAsset Schema Definition
Source of truth for media asset data model.
"""
from dataclasses import dataclass, field
from datetime import datetime
from enum import Enum
from typing import Any, Dict, List, Optional
from uuid import UUID
class AssetStatus(str, Enum):
"""Status of a media asset after probing."""
PENDING = "pending"
READY = "ready"
ERROR = "error"
@dataclass
class MediaAsset:
"""
A video/audio file registered in the system.
Metadata is populated asynchronously via ffprobe after registration.
"""
id: UUID
filename: str
file_path: str
# Status
status: AssetStatus = AssetStatus.PENDING
error_message: Optional[str] = None
# File info
file_size: Optional[int] = None
# Media metadata (populated by ffprobe)
duration: Optional[float] = None # seconds
video_codec: Optional[str] = None
audio_codec: Optional[str] = None
width: Optional[int] = None
height: Optional[int] = None
framerate: Optional[float] = None
bitrate: Optional[int] = None # bits per second
# Full ffprobe output and custom metadata
properties: Dict[str, Any] = field(default_factory=dict)
# User annotations
comments: str = ""
tags: List[str] = field(default_factory=list)
# Timestamps
created_at: Optional[datetime] = None
updated_at: Optional[datetime] = None