~cytrogen/kobo-manga

ref: 4e504823f4bf8d2b5f4279da3f4d4ebe98fc97ad kobo-manga/src/kobo_manga/models.py -rw-r--r-- 1.3 KiB
4e504823 — HallowDem Initial commit: kobo-manga pipeline a day ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
"""核心数据模型"""

from dataclasses import dataclass, field
from pathlib import Path


@dataclass
class PageImage:
    """单页图片"""
    chapter_id: str
    page_number: int
    url: str
    local_path: str | None = None


@dataclass
class Chapter:
    """漫画章节"""
    id: str
    title: str
    chapter_number: float
    url: str
    page_count: int | None = None
    chapter_type: str = "chapter"  # volume | chapter | extra


@dataclass
class MangaInfo:
    """漫画信息"""
    id: str
    title: str
    source: str
    url: str
    alt_title: str | None = None
    author: str | None = None
    cover_url: str | None = None
    description: str | None = None
    tags: list[str] = field(default_factory=list)
    chapters: list[Chapter] = field(default_factory=list)


@dataclass
class ChapterResult:
    """单章节下载结果"""
    chapter: Chapter
    status: str  # downloaded | partial | failed | skipped
    pages_total: int
    pages_downloaded: int
    download_path: Path | None = None


@dataclass
class DownloadResult:
    """多章节下载结果"""
    manga: MangaInfo
    chapters_total: int
    chapters_downloaded: int = 0
    chapters_skipped: int = 0
    chapters_failed: int = 0
    chapter_results: list[ChapterResult] = field(default_factory=list)