123 lines
3.1 KiB
Python
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'
|
|
|
|
|