This repository has been archived on 2023-10-01. You can view files and clone it, but cannot push or open issues or pull requests.
PyNyaaTa/pynyaata/types.py
2022-12-22 00:01:21 +00:00

65 lines
1.3 KiB
Python

from abc import ABC, abstractmethod
from datetime import datetime
from enum import Enum
from typing import List, Optional
from pydantic import BaseModel, ByteSize, HttpUrl
class Color(str, Enum):
WHITE = "white"
BLACK = "black"
LIGHT = "light"
DARK = "dark"
PRIMARY = "primary"
LINK = "link"
INFO = "info"
SUCCESS = "success"
WARNING = "warning"
DANGER = "danger"
DEFAULT = "default"
class RemoteFile(BaseModel):
bridge: str
id: int
category: str
color: Optional[Color]
name: str
link: HttpUrl
comment: int = 0
comment_url: HttpUrl
magnet: Optional[str]
torrent: Optional[HttpUrl]
size: Optional[ByteSize]
date: Optional[datetime]
seeds: Optional[int]
leechs: Optional[int]
downloads: Optional[int]
nb_pages: int = 1
class Bridge(BaseModel, ABC):
color: Color
title: str
favicon: HttpUrl
base_url: HttpUrl
@abstractmethod
def search_url(self, query: str = "", page: int = 1) -> HttpUrl:
pass
@abstractmethod
def search(self, query: str = "", page: int = 1) -> List[RemoteFile]:
pass
class Cache(ABC):
@abstractmethod
def get(self, key: str) -> Optional[List[RemoteFile]]:
pass
@abstractmethod
def set(self, key: str, data: List[RemoteFile]):
pass