MediaProcessing/apps/py-metadata/models/metadata.py
2026-01-04 15:12:59 +01:00

40 lines
984 B
Python

from dataclasses import dataclass, asdict
from typing import List, Optional
from enum import Enum
from models.enums import MediaType
@dataclass
class Summary:
summary: str
language: str
def to_dict(self):
return {k: v.strip() if isinstance(v, str) else v for k, v in asdict(self).items()}
@dataclass
class Metadata:
title: str
altTitle: List[str]
cover: str
banner: Optional[str]
type: MediaType
summary: List[Summary]
genres: List[str]
source: str
def to_dict(self):
def trim(item):
if isinstance(item, str):
return item.strip()
elif isinstance(item, list):
return [trim(sub_item) for sub_item in item]
elif isinstance(item, Enum):
return item.value
elif hasattr(item, "to_dict"):
return item.to_dict()
return item
return {key: trim(value) for key, value in asdict(self).items()}