40 lines
984 B
Python
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()}
|