33 lines
672 B
Python
33 lines
672 B
Python
|
|
from pydantic import BaseModel
|
|
from datetime import datetime
|
|
from typing import Literal
|
|
|
|
class Mark(BaseModel):
|
|
type: Literal["tag", "badge", "genre"]
|
|
value: str
|
|
|
|
class NovelFile(BaseModel):
|
|
filename: str
|
|
platform: Literal["android", "ios", "windows", "linux", "macos"]
|
|
|
|
class Novel(BaseModel):
|
|
title: str
|
|
description: str
|
|
|
|
vndb: int | None = None
|
|
hours_to_read: int
|
|
|
|
tags: list[str]
|
|
genres: list[str]
|
|
badges: list[str]
|
|
|
|
tg_post: str | None = None #url::Url
|
|
post_at: datetime | None = None
|
|
|
|
class FullNovel(BaseModel):
|
|
data: Novel
|
|
|
|
#upload_queue: list[str]
|
|
files: list[NovelFile]
|
|
screenshots: list[str]
|