mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-08-28 11:37:23 +08:00
fix schemas default_factory
This commit is contained in:
+22
-22
@@ -1,6 +1,6 @@
|
|||||||
from typing import Optional, Dict, List, Union
|
from typing import Optional, Dict, List, Union
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
|
||||||
class MetaInfo(BaseModel):
|
class MetaInfo(BaseModel):
|
||||||
@@ -104,56 +104,56 @@ class MediaInfo(BaseModel):
|
|||||||
# 二级分类
|
# 二级分类
|
||||||
category: Optional[str] = ""
|
category: Optional[str] = ""
|
||||||
# 季季集清单
|
# 季季集清单
|
||||||
seasons: Optional[Dict[int, list]] = {}
|
seasons: Optional[Dict[int, list]] = Field(default_factory=dict)
|
||||||
# 季详情
|
# 季详情
|
||||||
season_info: Optional[List[dict]] = []
|
season_info: Optional[List[dict]] = Field(default_factory=list)
|
||||||
# 别名和译名
|
# 别名和译名
|
||||||
names: Optional[list] = []
|
names: Optional[list] = Field(default_factory=list)
|
||||||
# 演员
|
# 演员
|
||||||
actors: Optional[list] = []
|
actors: Optional[list] = Field(default_factory=list)
|
||||||
# 导演
|
# 导演
|
||||||
directors: Optional[list] = []
|
directors: Optional[list] = Field(default_factory=list)
|
||||||
# 详情链接
|
# 详情链接
|
||||||
detail_link: Optional[str] = None
|
detail_link: Optional[str] = None
|
||||||
# 其它TMDB属性
|
# 其它TMDB属性
|
||||||
# 是否成人内容
|
# 是否成人内容
|
||||||
adult: Optional[bool] = False
|
adult: Optional[bool] = False
|
||||||
# 创建人
|
# 创建人
|
||||||
created_by: Optional[list] = []
|
created_by: Optional[list] = Field(default_factory=list)
|
||||||
# 集时长
|
# 集时长
|
||||||
episode_run_time: Optional[list] = []
|
episode_run_time: Optional[list] = Field(default_factory=list)
|
||||||
# 风格
|
# 风格
|
||||||
genres: Optional[List[dict]] = []
|
genres: Optional[List[dict]] = Field(default_factory=list)
|
||||||
# 首播日期
|
# 首播日期
|
||||||
first_air_date: Optional[str] = None
|
first_air_date: Optional[str] = None
|
||||||
# 首页
|
# 首页
|
||||||
homepage: Optional[str] = None
|
homepage: Optional[str] = None
|
||||||
# 语种
|
# 语种
|
||||||
languages: Optional[list] = []
|
languages: Optional[list] = Field(default_factory=list)
|
||||||
# 最后上映日期
|
# 最后上映日期
|
||||||
last_air_date: Optional[str] = None
|
last_air_date: Optional[str] = None
|
||||||
# 流媒体平台
|
# 流媒体平台
|
||||||
networks: Optional[list] = []
|
networks: Optional[list] = Field(default_factory=list)
|
||||||
# 集数
|
# 集数
|
||||||
number_of_episodes: Optional[int] = 0
|
number_of_episodes: Optional[int] = 0
|
||||||
# 季数
|
# 季数
|
||||||
number_of_seasons: Optional[int] = 0
|
number_of_seasons: Optional[int] = 0
|
||||||
# 原产国
|
# 原产国
|
||||||
origin_country: Optional[list] = []
|
origin_country: Optional[list] = Field(default_factory=list)
|
||||||
# 原名
|
# 原名
|
||||||
original_name: Optional[str] = None
|
original_name: Optional[str] = None
|
||||||
# 出品公司
|
# 出品公司
|
||||||
production_companies: Optional[list] = []
|
production_companies: Optional[list] = Field(default_factory=list)
|
||||||
# 出品国
|
# 出品国
|
||||||
production_countries: Optional[list] = []
|
production_countries: Optional[list] = Field(default_factory=list)
|
||||||
# 语种
|
# 语种
|
||||||
spoken_languages: Optional[list] = []
|
spoken_languages: Optional[list] = Field(default_factory=list)
|
||||||
# 状态
|
# 状态
|
||||||
status: Optional[str] = None
|
status: Optional[str] = None
|
||||||
# 标签
|
# 标签
|
||||||
tagline: Optional[str] = None
|
tagline: Optional[str] = None
|
||||||
# 风格ID
|
# 风格ID
|
||||||
genre_ids: Optional[list] = []
|
genre_ids: Optional[list] = Field(default_factory=list)
|
||||||
# 评价数量
|
# 评价数量
|
||||||
vote_count: Optional[int] = 0
|
vote_count: Optional[int] = 0
|
||||||
# 流行度
|
# 流行度
|
||||||
@@ -161,7 +161,7 @@ class MediaInfo(BaseModel):
|
|||||||
# 时长
|
# 时长
|
||||||
runtime: Optional[int] = None
|
runtime: Optional[int] = None
|
||||||
# 下一集
|
# 下一集
|
||||||
next_episode_to_air: Optional[dict] = {}
|
next_episode_to_air: Optional[dict] = Field(default_factory=dict)
|
||||||
|
|
||||||
|
|
||||||
class TorrentInfo(BaseModel):
|
class TorrentInfo(BaseModel):
|
||||||
@@ -213,7 +213,7 @@ class TorrentInfo(BaseModel):
|
|||||||
# HR
|
# HR
|
||||||
hit_and_run: Optional[bool] = False
|
hit_and_run: Optional[bool] = False
|
||||||
# 种子标签
|
# 种子标签
|
||||||
labels: Optional[list] = []
|
labels: Optional[list] = Field(default_factory=list)
|
||||||
# 种子优先级
|
# 种子优先级
|
||||||
pri_order: Optional[int] = 0
|
pri_order: Optional[int] = 0
|
||||||
# 促销
|
# 促销
|
||||||
@@ -245,13 +245,13 @@ class MediaPerson(BaseModel):
|
|||||||
type: Optional[Union[str, int]] = 1
|
type: Optional[Union[str, int]] = 1
|
||||||
name: Optional[str] = None
|
name: Optional[str] = None
|
||||||
character: Optional[str] = None
|
character: Optional[str] = None
|
||||||
images: Optional[dict] = {}
|
images: Optional[dict] = Field(default_factory=dict)
|
||||||
# themoviedb
|
# themoviedb
|
||||||
profile_path: Optional[str] = None
|
profile_path: Optional[str] = None
|
||||||
gender: Optional[Union[str, int]] = None
|
gender: Optional[Union[str, int]] = None
|
||||||
original_name: Optional[str] = None
|
original_name: Optional[str] = None
|
||||||
credit_id: Optional[str] = None
|
credit_id: Optional[str] = None
|
||||||
also_known_as: Optional[list] = []
|
also_known_as: Optional[list] = Field(default_factory=list)
|
||||||
birthday: Optional[str] = None
|
birthday: Optional[str] = None
|
||||||
deathday: Optional[str] = None
|
deathday: Optional[str] = None
|
||||||
imdb_id: Optional[str] = None
|
imdb_id: Optional[str] = None
|
||||||
@@ -260,11 +260,11 @@ class MediaPerson(BaseModel):
|
|||||||
popularity: Optional[float] = None
|
popularity: Optional[float] = None
|
||||||
biography: Optional[str] = None
|
biography: Optional[str] = None
|
||||||
# douban
|
# douban
|
||||||
roles: Optional[list] = []
|
roles: Optional[list] = Field(default_factory=list)
|
||||||
title: Optional[str] = None
|
title: Optional[str] = None
|
||||||
url: Optional[str] = None
|
url: Optional[str] = None
|
||||||
avatar: Optional[Union[str, dict]] = None
|
avatar: Optional[Union[str, dict]] = None
|
||||||
latin_name: Optional[str] = None
|
latin_name: Optional[str] = None
|
||||||
# bangumi
|
# bangumi
|
||||||
career: Optional[list] = []
|
career: Optional[list] = Field(default_factory=list)
|
||||||
relation: Optional[str] = None
|
relation: Optional[str] = None
|
||||||
|
|||||||
+3
-3
@@ -1,6 +1,6 @@
|
|||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
|
||||||
class FileItem(BaseModel):
|
class FileItem(BaseModel):
|
||||||
@@ -21,7 +21,7 @@ class FileItem(BaseModel):
|
|||||||
# 修改时间
|
# 修改时间
|
||||||
modify_time: Optional[float] = None
|
modify_time: Optional[float] = None
|
||||||
# 子节点
|
# 子节点
|
||||||
children: Optional[list] = []
|
children: Optional[list] = Field(default_factory=list)
|
||||||
# ID
|
# ID
|
||||||
fileid: Optional[str] = None
|
fileid: Optional[str] = None
|
||||||
# 父ID
|
# 父ID
|
||||||
@@ -45,4 +45,4 @@ class StorageUsage(BaseModel):
|
|||||||
|
|
||||||
class StorageTransType(BaseModel):
|
class StorageTransType(BaseModel):
|
||||||
# 传输类型
|
# 传输类型
|
||||||
transtype: Optional[dict] = {}
|
transtype: Optional[dict] = Field(default_factory=dict)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Optional, Dict, Union, List, Any
|
from typing import Optional, Dict, Union, List, Any
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
from app.schemas.types import MediaType
|
from app.schemas.types import MediaType
|
||||||
|
|
||||||
@@ -13,7 +13,7 @@ class ExistMediaInfo(BaseModel):
|
|||||||
# 类型 电影、电视剧
|
# 类型 电影、电视剧
|
||||||
type: Optional[MediaType]
|
type: Optional[MediaType]
|
||||||
# 季
|
# 季
|
||||||
seasons: Optional[Dict[int, list]] = {}
|
seasons: Optional[Dict[int, list]] = Field(default_factory=dict)
|
||||||
# 媒体服务器类型:plex、jellyfin、emby
|
# 媒体服务器类型:plex、jellyfin、emby
|
||||||
server_type: Optional[str] = None
|
server_type: Optional[str] = None
|
||||||
# 媒体服务器名称
|
# 媒体服务器名称
|
||||||
@@ -29,7 +29,7 @@ class NotExistMediaInfo(BaseModel):
|
|||||||
# 季
|
# 季
|
||||||
season: Optional[int] = None
|
season: Optional[int] = None
|
||||||
# 剧集列表
|
# 剧集列表
|
||||||
episodes: Optional[list] = []
|
episodes: Optional[list] = Field(default_factory=list)
|
||||||
# 总集数
|
# 总集数
|
||||||
total_episode: Optional[int] = 0
|
total_episode: Optional[int] = 0
|
||||||
# 开始集
|
# 开始集
|
||||||
@@ -132,7 +132,7 @@ class MediaServerSeasonInfo(BaseModel):
|
|||||||
媒体服务器媒体剧集信息
|
媒体服务器媒体剧集信息
|
||||||
"""
|
"""
|
||||||
season: Optional[int] = None
|
season: Optional[int] = None
|
||||||
episodes: Optional[List[int]] = []
|
episodes: Optional[List[int]] = Field(default_factory=list)
|
||||||
|
|
||||||
|
|
||||||
class WebhookEventInfo(BaseModel):
|
class WebhookEventInfo(BaseModel):
|
||||||
@@ -173,4 +173,4 @@ class MediaServerPlayItem(BaseModel):
|
|||||||
image: Optional[str] = None
|
image: Optional[str] = None
|
||||||
link: Optional[str] = None
|
link: Optional[str] = None
|
||||||
percent: Optional[float] = None
|
percent: Optional[float] = None
|
||||||
BackdropImageTags: Optional[list] = []
|
BackdropImageTags: Optional[list] = Field(default_factory=list)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from typing import Optional, Union
|
from typing import Optional, Union
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
from app.schemas.types import NotificationType, MessageChannel
|
from app.schemas.types import NotificationType, MessageChannel
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ class Subscription(BaseModel):
|
|||||||
客户端消息订阅
|
客户端消息订阅
|
||||||
"""
|
"""
|
||||||
endpoint: Optional[str]
|
endpoint: Optional[str]
|
||||||
keys: Optional[dict] = {}
|
keys: Optional[dict] = Field(default_factory=dict)
|
||||||
|
|
||||||
|
|
||||||
class SubscriptionMessage(BaseModel):
|
class SubscriptionMessage(BaseModel):
|
||||||
@@ -112,4 +112,4 @@ class SubscriptionMessage(BaseModel):
|
|||||||
body: Optional[str]
|
body: Optional[str]
|
||||||
icon: Optional[str]
|
icon: Optional[str]
|
||||||
url: Optional[str]
|
url: Optional[str]
|
||||||
data: Optional[dict] = {}
|
data: Optional[dict] = Field(default_factory=dict)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from typing import Optional, List
|
from typing import Optional, List
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
|
||||||
class Plugin(BaseModel):
|
class Plugin(BaseModel):
|
||||||
@@ -43,7 +43,7 @@ class Plugin(BaseModel):
|
|||||||
# 安装次数
|
# 安装次数
|
||||||
install_count: Optional[int] = 0
|
install_count: Optional[int] = 0
|
||||||
# 更新记录
|
# 更新记录
|
||||||
history: Optional[dict] = {}
|
history: Optional[dict] = Field(default_factory=dict)
|
||||||
# 添加时间,值越小表示越靠后发布
|
# 添加时间,值越小表示越靠后发布
|
||||||
add_time: Optional[int] = 0
|
add_time: Optional[int] = 0
|
||||||
# 插件公钥
|
# 插件公钥
|
||||||
@@ -60,8 +60,8 @@ class PluginDashboard(Plugin):
|
|||||||
# 仪表板key
|
# 仪表板key
|
||||||
key: Optional[str] = None
|
key: Optional[str] = None
|
||||||
# 全局配置
|
# 全局配置
|
||||||
attrs: Optional[dict] = {}
|
attrs: Optional[dict] = Field(default_factory=dict)
|
||||||
# col列数
|
# col列数
|
||||||
cols: Optional[dict] = {}
|
cols: Optional[dict] = Field(default_factory=dict)
|
||||||
# 页面元素
|
# 页面元素
|
||||||
elements: Optional[List[dict]] = []
|
elements: Optional[List[dict]] = Field(default_factory=list)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from typing import Optional, Union
|
from typing import Optional, Union
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
|
||||||
class Response(BaseModel):
|
class Response(BaseModel):
|
||||||
@@ -9,4 +9,4 @@ class Response(BaseModel):
|
|||||||
# 消息文本
|
# 消息文本
|
||||||
message: Optional[str] = None
|
message: Optional[str] = None
|
||||||
# 数据
|
# 数据
|
||||||
data: Optional[Union[dict, list]] = {}
|
data: Optional[Union[dict, list]] = Field(default_factory=dict)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
from typing import Optional
|
from typing import Optional
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
|
||||||
class RadarrMovie(BaseModel):
|
class RadarrMovie(BaseModel):
|
||||||
@@ -28,9 +28,9 @@ class SonarrSeries(BaseModel):
|
|||||||
overview: Optional[str]
|
overview: Optional[str]
|
||||||
network: Optional[str]
|
network: Optional[str]
|
||||||
airTime: Optional[str]
|
airTime: Optional[str]
|
||||||
images: list = []
|
images: list = Field(default_factory=list)
|
||||||
remotePoster: Optional[str]
|
remotePoster: Optional[str]
|
||||||
seasons: list = []
|
seasons: list = Field(default_factory=list)
|
||||||
year: Optional[str]
|
year: Optional[str]
|
||||||
path: Optional[str]
|
path: Optional[str]
|
||||||
profileId: Optional[int]
|
profileId: Optional[int]
|
||||||
@@ -49,9 +49,9 @@ class SonarrSeries(BaseModel):
|
|||||||
cleanTitle: Optional[str]
|
cleanTitle: Optional[str]
|
||||||
titleSlug: Optional[str]
|
titleSlug: Optional[str]
|
||||||
certification: Optional[str]
|
certification: Optional[str]
|
||||||
genres: list = []
|
genres: list = Field(default_factory=list)
|
||||||
tags: list = []
|
tags: list = Field(default_factory=list)
|
||||||
added: Optional[str]
|
added: Optional[str]
|
||||||
ratings: Optional[dict]
|
ratings: Optional[dict]
|
||||||
qualityProfileId: Optional[int]
|
qualityProfileId: Optional[int]
|
||||||
statistics: dict = {}
|
statistics: dict = Field(default_factory=dict)
|
||||||
|
|||||||
+4
-4
@@ -1,6 +1,6 @@
|
|||||||
from typing import Optional, Any, Union, Dict
|
from typing import Optional, Any, Union, Dict
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
|
||||||
class Site(BaseModel):
|
class Site(BaseModel):
|
||||||
@@ -99,11 +99,11 @@ class SiteUserData(BaseModel):
|
|||||||
# 下载体积
|
# 下载体积
|
||||||
leeching_size: Optional[int] = 0
|
leeching_size: Optional[int] = 0
|
||||||
# 做种人数, 种子大小
|
# 做种人数, 种子大小
|
||||||
seeding_info: Optional[list] = []
|
seeding_info: Optional[list] = Field(default_factory=list)
|
||||||
# 未读消息
|
# 未读消息
|
||||||
message_unread: Optional[int] = 0
|
message_unread: Optional[int] = 0
|
||||||
# 未读消息内容
|
# 未读消息内容
|
||||||
message_unread_contents: Optional[list] = []
|
message_unread_contents: Optional[list] = Field(default_factory=list)
|
||||||
# 错误信息
|
# 错误信息
|
||||||
err_msg: Optional[str] = None
|
err_msg: Optional[str] = None
|
||||||
# 更新日期
|
# 更新日期
|
||||||
@@ -114,4 +114,4 @@ class SiteUserData(BaseModel):
|
|||||||
|
|
||||||
class SiteAuth(BaseModel):
|
class SiteAuth(BaseModel):
|
||||||
site: Optional[str] = None
|
site: Optional[str] = None
|
||||||
params: Optional[Dict[str, Union[int, str]]] = {}
|
params: Optional[Dict[str, Union[int, str]]] = Field(default_factory=dict)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from typing import Optional, List, Dict, Any
|
from typing import Optional, List, Dict, Any
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
|
||||||
class Subscribe(BaseModel):
|
class Subscribe(BaseModel):
|
||||||
@@ -53,7 +53,7 @@ class Subscribe(BaseModel):
|
|||||||
# 订阅用户
|
# 订阅用户
|
||||||
username: Optional[str] = None
|
username: Optional[str] = None
|
||||||
# 订阅站点
|
# 订阅站点
|
||||||
sites: Optional[List[int]] = []
|
sites: Optional[List[int]] = Field(default_factory=list)
|
||||||
# 下载器
|
# 下载器
|
||||||
downloader: Optional[str] = None
|
downloader: Optional[str] = None
|
||||||
# 是否洗版
|
# 是否洗版
|
||||||
@@ -71,7 +71,7 @@ class Subscribe(BaseModel):
|
|||||||
# 自定义媒体类别
|
# 自定义媒体类别
|
||||||
media_category: Optional[str] = None
|
media_category: Optional[str] = None
|
||||||
# 过滤规则组
|
# 过滤规则组
|
||||||
filter_groups: Optional[List[str]] = []
|
filter_groups: Optional[List[str]] = Field(default_factory=list)
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
orm_mode = True
|
orm_mode = True
|
||||||
@@ -157,13 +157,13 @@ class SubscribeEpisodeInfo(BaseModel):
|
|||||||
# 背景图
|
# 背景图
|
||||||
backdrop: Optional[str] = None
|
backdrop: Optional[str] = None
|
||||||
# 下载文件信息
|
# 下载文件信息
|
||||||
download: Optional[List[SubscribeDownloadFileInfo]] = []
|
download: Optional[List[SubscribeDownloadFileInfo]] = Field(default_factory=list)
|
||||||
# 媒体库文件信息
|
# 媒体库文件信息
|
||||||
library: Optional[List[SubscribeLibraryFileInfo]] = []
|
library: Optional[List[SubscribeLibraryFileInfo]] = Field(default_factory=list)
|
||||||
|
|
||||||
|
|
||||||
class SubscrbieInfo(BaseModel):
|
class SubscrbieInfo(BaseModel):
|
||||||
# 订阅信息
|
# 订阅信息
|
||||||
subscribe: Optional[Subscribe] = None
|
subscribe: Optional[Subscribe] = None
|
||||||
# 集信息 {集号: {download: 文件路径,library: 文件路径, backdrop: url, title: 标题, description: 描述}}
|
# 集信息 {集号: {download: 文件路径,library: 文件路径, backdrop: url, title: 标题, description: 描述}}
|
||||||
episodes: Optional[Dict[int, SubscribeEpisodeInfo]] = {}
|
episodes: Optional[Dict[int, SubscribeEpisodeInfo]] = Field(default_factory=dict)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Optional, Any
|
from typing import Optional, Any
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@@ -30,11 +30,11 @@ class MediaServerConf(BaseModel):
|
|||||||
# 类型 emby/jellyfin/plex
|
# 类型 emby/jellyfin/plex
|
||||||
type: Optional[str] = None
|
type: Optional[str] = None
|
||||||
# 配置
|
# 配置
|
||||||
config: Optional[dict] = {}
|
config: Optional[dict] = Field(default_factory=dict)
|
||||||
# 是否启用
|
# 是否启用
|
||||||
enabled: Optional[bool] = False
|
enabled: Optional[bool] = False
|
||||||
# 同步媒体体库列表
|
# 同步媒体体库列表
|
||||||
sync_libraries: Optional[list] = []
|
sync_libraries: Optional[list] = Field(default_factory=list)
|
||||||
|
|
||||||
|
|
||||||
class DownloaderConf(BaseModel):
|
class DownloaderConf(BaseModel):
|
||||||
@@ -48,7 +48,7 @@ class DownloaderConf(BaseModel):
|
|||||||
# 是否默认
|
# 是否默认
|
||||||
default: Optional[bool] = False
|
default: Optional[bool] = False
|
||||||
# 配置
|
# 配置
|
||||||
config: Optional[dict] = {}
|
config: Optional[dict] = Field(default_factory=dict)
|
||||||
# 是否启用
|
# 是否启用
|
||||||
enabled: Optional[bool] = False
|
enabled: Optional[bool] = False
|
||||||
|
|
||||||
@@ -62,9 +62,9 @@ class NotificationConf(BaseModel):
|
|||||||
# 类型 telegram/wechat/vocechat/synologychat/slack/webpush
|
# 类型 telegram/wechat/vocechat/synologychat/slack/webpush
|
||||||
type: Optional[str] = None
|
type: Optional[str] = None
|
||||||
# 配置
|
# 配置
|
||||||
config: Optional[dict] = {}
|
config: Optional[dict] = Field(default_factory=dict)
|
||||||
# 场景开关
|
# 场景开关
|
||||||
switchs: Optional[list] = []
|
switchs: Optional[list] = Field(default_factory=list)
|
||||||
# 是否启用
|
# 是否启用
|
||||||
enabled: Optional[bool] = False
|
enabled: Optional[bool] = False
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@ class StorageConf(BaseModel):
|
|||||||
# 名称
|
# 名称
|
||||||
name: Optional[str] = None
|
name: Optional[str] = None
|
||||||
# 配置
|
# 配置
|
||||||
config: Optional[dict] = {}
|
config: Optional[dict] = Field(default_factory=dict)
|
||||||
|
|
||||||
|
|
||||||
class TransferDirectoryConf(BaseModel):
|
class TransferDirectoryConf(BaseModel):
|
||||||
|
|||||||
+3
-3
@@ -1,6 +1,6 @@
|
|||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
|
||||||
class TmdbSeason(BaseModel):
|
class TmdbSeason(BaseModel):
|
||||||
@@ -28,5 +28,5 @@ class TmdbEpisode(BaseModel):
|
|||||||
season_number: Optional[int] = None
|
season_number: Optional[int] = None
|
||||||
still_path: Optional[str] = None
|
still_path: Optional[str] = None
|
||||||
vote_average: Optional[float] = None
|
vote_average: Optional[float] = None
|
||||||
crew: Optional[list] = []
|
crew: Optional[list] = Field(default_factory=list)
|
||||||
guest_stars: Optional[list] = []
|
guest_stars: Optional[list] = Field(default_factory=list)
|
||||||
|
|||||||
+15
-6
@@ -1,8 +1,9 @@
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
from app.core.meta import MetaBase
|
||||||
from app.schemas.file import FileItem
|
from app.schemas.file import FileItem
|
||||||
|
|
||||||
|
|
||||||
@@ -34,15 +35,23 @@ class DownloadingTorrent(BaseModel):
|
|||||||
state: Optional[str] = 'downloading'
|
state: Optional[str] = 'downloading'
|
||||||
upspeed: Optional[str] = None
|
upspeed: Optional[str] = None
|
||||||
dlspeed: Optional[str] = None
|
dlspeed: Optional[str] = None
|
||||||
media: Optional[dict] = {}
|
media: Optional[dict] = Field(default_factory=dict)
|
||||||
userid: Optional[str] = None
|
userid: Optional[str] = None
|
||||||
username: Optional[str] = None
|
username: Optional[str] = None
|
||||||
left_time: Optional[str] = None
|
left_time: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
|
class TransferTask(BaseModel):
|
||||||
|
"""
|
||||||
|
文件整理任务
|
||||||
|
"""
|
||||||
|
fileitem: Optional[FileItem] = None
|
||||||
|
meta: Optional[MetaBase] = None
|
||||||
|
|
||||||
|
|
||||||
class TransferInfo(BaseModel):
|
class TransferInfo(BaseModel):
|
||||||
"""
|
"""
|
||||||
文件转移结果信息
|
文件整理结果信息
|
||||||
"""
|
"""
|
||||||
# 是否成功标志
|
# 是否成功标志
|
||||||
success: bool = True
|
success: bool = True
|
||||||
@@ -57,13 +66,13 @@ class TransferInfo(BaseModel):
|
|||||||
# 处理文件数
|
# 处理文件数
|
||||||
file_count: Optional[int] = 0
|
file_count: Optional[int] = 0
|
||||||
# 处理文件清单
|
# 处理文件清单
|
||||||
file_list: Optional[list] = []
|
file_list: Optional[list] = Field(default_factory=list)
|
||||||
# 目标文件清单
|
# 目标文件清单
|
||||||
file_list_new: Optional[list] = []
|
file_list_new: Optional[list] = Field(default_factory=list)
|
||||||
# 总文件大小
|
# 总文件大小
|
||||||
total_size: Optional[float] = 0
|
total_size: Optional[float] = 0
|
||||||
# 失败清单
|
# 失败清单
|
||||||
fail_list: Optional[list] = []
|
fail_list: Optional[list] = Field(default_factory=list)
|
||||||
# 错误信息
|
# 错误信息
|
||||||
message: Optional[str] = None
|
message: Optional[str] = None
|
||||||
# 是否需要刮削
|
# 是否需要刮削
|
||||||
|
|||||||
+5
-5
@@ -1,6 +1,6 @@
|
|||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
|
||||||
# Shared properties
|
# Shared properties
|
||||||
@@ -18,9 +18,9 @@ class UserBase(BaseModel):
|
|||||||
# 是否开启二次验证
|
# 是否开启二次验证
|
||||||
is_otp: Optional[bool] = False
|
is_otp: Optional[bool] = False
|
||||||
# 权限
|
# 权限
|
||||||
permissions: Optional[dict] = {}
|
permissions: Optional[dict] = Field(default_factory=dict)
|
||||||
# 个性化设置
|
# 个性化设置
|
||||||
settings: Optional[dict] = {}
|
settings: Optional[dict] = Field(default_factory=dict)
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
orm_mode = True
|
orm_mode = True
|
||||||
@@ -31,7 +31,7 @@ class UserCreate(UserBase):
|
|||||||
name: str
|
name: str
|
||||||
email: Optional[str] = None
|
email: Optional[str] = None
|
||||||
password: Optional[str] = None
|
password: Optional[str] = None
|
||||||
settings: Optional[dict] = {}
|
settings: Optional[dict] = Field(default_factory=dict)
|
||||||
|
|
||||||
|
|
||||||
# Properties to receive via API on update
|
# Properties to receive via API on update
|
||||||
@@ -40,7 +40,7 @@ class UserUpdate(UserBase):
|
|||||||
name: str
|
name: str
|
||||||
email: Optional[str] = None
|
email: Optional[str] = None
|
||||||
password: Optional[str] = None
|
password: Optional[str] = None
|
||||||
settings: Optional[dict] = {}
|
settings: Optional[dict] = Field(default_factory=dict)
|
||||||
|
|
||||||
|
|
||||||
class UserInDBBase(UserBase):
|
class UserInDBBase(UserBase):
|
||||||
|
|||||||
Reference in New Issue
Block a user