Files
vaiola/modules/civit/datamodel.py

123 lines
3.1 KiB
Python

from dataclasses import dataclass
from typing import Optional
from .datamodel_base import ForwardingBase
@dataclass
class Creator(ForwardingBase):
username: Optional[str] = None
modelCount: Optional[int] = None
link: Optional[str] = None
image: Optional[str] = None
def __post_init__(self):
super().__post_init__()
self._forwarding = {}
self._key_field = 'username'
@dataclass
class Tag(ForwardingBase):
name: Optional[str] = None
link: Optional[str] = None
def __post_init__(self):
super().__post_init__()
self._forwarding = {}
self._key_field = 'name'
@dataclass
class ModelVersionStats(ForwardingBase):
downloadCount: Optional[int] = None
ratingCount: Optional[int] = None
rating: Optional[int] = None
thumbsUpCount: Optional[int] = None
thumbsDownCount: Optional[int] = None
def __post_init__(self):
super().__post_init__()
self._forwarding = {}
@dataclass
class ModelVersion(ForwardingBase):
id: Optional[int] = None
index: Optional[int] = None
name: Optional[str] = None
baseModel: Optional[str] = None
baseModelType: Optional[str] = None
publishedAt: Optional[str] = None
availability: Optional[str] = None
nsfwLevel: Optional[int] = None
description: Optional[str] = None
trainedWords: Optional[list[str]] = None
stats: Optional[ModelVersionStats] = None
supportsGeneration: Optional[bool] = None
downloadUrl: Optional[str] = None
# FILES
# IMAGES
def __post_init__(self):
super().__post_init__()
self._forwarding = {
'stats': ModelVersionStats,
}
self._key_field = 'id'
@dataclass
class ModelStats(ForwardingBase):
downloadCount: Optional[int] = None
favoriteCount: Optional[int] = None
thumbsUpCount: Optional[int] = None
thumbsDownCount: Optional[int] = None
commentCount: Optional[int] = None
ratingCount: Optional[int] = None
rating: Optional[int] = None
def __post_init__(self):
super().__post_init__()
self._forwarding = {}
@dataclass
class Model(ForwardingBase):
id: Optional[int] = None
name: Optional[str] = None
description: Optional[str] = None
allowNoCredit: Optional[bool] = None
allowCommercialUse: Optional[list] = None
allowDerivatives: Optional[bool] = None
allowDifferentLicense: Optional[bool] = None
type: Optional[str] = None
minor: Optional[bool] = None
sfwOnly: Optional[bool] = None
poi: Optional[bool] = None
nsfw: Optional[bool] = None
nsfwLevel: Optional[int] = None
availability: Optional[str] = None
cosmetic: Optional[str] = None
supportsGeneration: Optional[bool] = None
stats: Optional[ModelStats] = None
creator: Optional[Creator] = None
tags: Optional[list[Tag]] = None
modelVersions: Optional[list[ModelVersion]] = None
def __post_init__(self):
super().__post_init__()
self._forwarding = {
'stats': ModelStats,
'creator': Creator,
'tags': Tag,
'modelVersions': ModelVersion,
}
self._key_field = 'id'