72 lines
1.9 KiB
Python
72 lines
1.9 KiB
Python
from pydantic import BaseModel
|
|
from enum import Enum
|
|
from typing import Optional
|
|
from datetime import datetime
|
|
|
|
|
|
class DownloadStatus(str, Enum):
|
|
PENDING = "pending"
|
|
DOWNLOADING = "downloading"
|
|
PAUSED = "paused"
|
|
COMPLETED = "completed"
|
|
FAILED = "failed"
|
|
CANCELLED = "cancelled"
|
|
|
|
|
|
class HostType(str, Enum):
|
|
RAPIDFILE = "rapidfile"
|
|
UNFICHIER = "1fichier"
|
|
DOODSTREAM = "doodstream"
|
|
OTHER = "other"
|
|
|
|
|
|
class DownloadTask(BaseModel):
|
|
id: str
|
|
url: str
|
|
filename: str
|
|
host: HostType
|
|
status: DownloadStatus
|
|
progress: float = 0.0
|
|
downloaded_bytes: int = 0
|
|
total_bytes: Optional[int] = None
|
|
speed: float = 0.0
|
|
error: Optional[str] = None
|
|
created_at: datetime
|
|
started_at: Optional[datetime] = None
|
|
completed_at: Optional[datetime] = None
|
|
file_path: Optional[str] = None
|
|
|
|
|
|
class DownloadRequest(BaseModel):
|
|
url: str
|
|
filename: Optional[str] = None
|
|
|
|
|
|
class AnimeMetadata(BaseModel):
|
|
"""Metadata for anime series"""
|
|
synopsis: Optional[str] = None
|
|
genres: list[str] = []
|
|
rating: Optional[str] = None # Could be "PG-13", "R", etc., or numeric like "8.5/10"
|
|
release_year: Optional[int] = None
|
|
studio: Optional[str] = None
|
|
poster_image: Optional[str] = None
|
|
banner_image: Optional[str] = None
|
|
total_episodes: Optional[int] = None
|
|
status: Optional[str] = None # "Ongoing", "Completed", etc.
|
|
alternative_titles: list[str] = []
|
|
|
|
|
|
class AnimeSearchResult(BaseModel):
|
|
"""Enhanced search result with metadata"""
|
|
title: str
|
|
url: str
|
|
cover_image: Optional[str] = None
|
|
type: str # "search_result" or "direct"
|
|
metadata: Optional[AnimeMetadata] = None
|
|
|
|
# Import all SQLModel tables here to ensure they are registered together
|
|
from .auth import UserTable
|
|
from .watchlist import WatchlistItemTable, WatchlistSettingsTable
|
|
from .favorites import FavoriteTable
|
|
from .sonarr import SonarrMappingTable, SonarrConfigTable
|