summaryrefslogtreecommitdiff
path: root/ATRI/plugins/saucenao/models.py
blob: bc345cb5247cbf2f7ba18ecadd80200d0c05ba3b (plain)
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
from typing import List, Optional, Union, Dict

from pydantic import BaseModel


class SauceNAORequest(BaseModel):
    api_key: str
    url: str = str()
    output_type: int
    testmode: int
    dbmaski: int
    db: int
    numres: int


class SauceNAOResponseIndexFields(BaseModel):
    status: int
    parent_id: int
    id: int
    results: Optional[int] = None


class SauceNAOResponseHeader(BaseModel):
    user_id: str
    account_type: str
    short_limit: str
    long_limit: str
    long_remaining: int
    short_remaining: int
    status: int
    results_requested: int
    index: Dict[str, SauceNAOResponseIndexFields]
    search_depth: str
    minimum_similarity: float
    query_image_display: str
    query_image: str
    results_returned: int


class SauceNAOResponseResultsHeader(BaseModel):
    similarity: str
    thumbnail: str
    index_id: int
    index_name: str
    dupes: int
    hidden: int


class SauceNAOResponseResultsData(BaseModel):
    ext_urls: Optional[List[str]] = None
    title: Optional[str] = None
    pixiv_id: Optional[int] = None
    member_name: Optional[str] = None
    member_id: Optional[int] = None
    published: Optional[str] = None
    service: Optional[str] = None
    service_name: Optional[str] = None
    id: Optional[str] = None
    user_id: Optional[str] = None
    user_name: Optional[str] = None
    yandere_id: Optional[int] = None
    konachan_id: Optional[int] = None
    creator: Optional[Union[str, List[str]]] = None
    material: Optional[str] = None
    characters: Optional[str] = None
    source: Optional[str] = None
    danbooru_id: Optional[int] = None
    gelbooru_id: Optional[int] = None
    eng_name: Optional[str] = None
    jp_name: Optional[str] = None


class SauceNAOResponseResults(BaseModel):
    header: SauceNAOResponseResultsHeader
    data: SauceNAOResponseResultsData


class SauceNAOResponse(BaseModel):
    header: SauceNAOResponseHeader
    results: List[SauceNAOResponseResults]


class SauceNAOResult(BaseModel):
    similarity: str
    index_name: str
    url: str