refactor(core): 优化配置项和模型定义

- 为配置项添加类型注解,提高代码可读性和安全性
- 为模型字段添加默认值,优化数据处理
- 更新验证器使用新语法,以适应Pydantic库的变更
This commit is contained in:
awsl1110
2025-05-31 16:38:06 +08:00
parent bc8198fb8a
commit 7f5991aa34
3 changed files with 11 additions and 9 deletions
+5 -3
View File
@@ -25,7 +25,7 @@ class ConfigModel(BaseModel):
extra = "ignore" # 忽略未定义的配置项 extra = "ignore" # 忽略未定义的配置项
# 项目名称 # 项目名称
PROJECT_NAME = "MoviePilot" PROJECT_NAME: str = "MoviePilot"
# 域名 格式;https://movie-pilot.org # 域名 格式;https://movie-pilot.org
APP_DOMAIN: str = "" APP_DOMAIN: str = ""
# API路径 # API路径
@@ -124,7 +124,7 @@ class ConfigModel(BaseModel):
# 元数据识别缓存过期时间(小时) # 元数据识别缓存过期时间(小时)
META_CACHE_EXPIRE: int = 0 META_CACHE_EXPIRE: int = 0
# 电视剧动漫的分类genre_ids # 电视剧动漫的分类genre_ids
ANIME_GENREIDS = [16] ANIME_GENREIDS: list[int] = [16]
# 用户认证站点 # 用户认证站点
AUTH_SITE: str = "" AUTH_SITE: str = ""
# 自动检查和更新站点资源包(站点索引、认证等) # 自动检查和更新站点资源包(站点索引、认证等)
@@ -202,7 +202,7 @@ class ConfigModel(BaseModel):
# CookieCloud同步黑名单,多个域名,分割 # CookieCloud同步黑名单,多个域名,分割
COOKIECLOUD_BLACKLIST: Optional[str] = None COOKIECLOUD_BLACKLIST: Optional[str] = None
# CookieCloud对应的浏览器UA # CookieCloud对应的浏览器UA
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.57" USER_AGENT: str = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.57"
# 电影重命名格式 # 电影重命名格式
MOVIE_RENAME_FORMAT: str = "{{title}}{% if year %} ({{year}}){% endif %}" \ MOVIE_RENAME_FORMAT: str = "{{title}}{% if year %} ({{year}}){% endif %}" \
"/{{title}}{% if year %} ({{year}}){% endif %}{% if part %}-{{part}}{% endif %}{% if videoFormat %} - {{videoFormat}}{% endif %}" \ "/{{title}}{% if year %} ({{year}}){% endif %}{% if part %}-{{part}}{% endif %}{% if videoFormat %} - {{videoFormat}}{% endif %}" \
@@ -394,6 +394,8 @@ class Settings(BaseSettings, ConfigModel, LogConfigModel):
f"配置项 '{field_name}' 的值 '{value}' 无法转换成正确的类型,使用默认值 '{default}',错误信息: {e}") f"配置项 '{field_name}' 的值 '{value}' 无法转换成正确的类型,使用默认值 '{default}',错误信息: {e}")
return default, True return default, True
# TODO[pydantic]: We couldn't refactor the `validator`, please replace it by `field_validator` manually.
# Check https://docs.pydantic.dev/dev-v2/migration/#changes-to-validators for more information.
@validator('*', pre=True, always=True) @validator('*', pre=True, always=True)
def generic_type_validator(cls, value: Any, field): # noqa def generic_type_validator(cls, value: Any, field): # noqa
""" """
+1 -1
View File
@@ -11,7 +11,7 @@ class ExistMediaInfo(BaseModel):
媒体服务器存在媒体信息 媒体服务器存在媒体信息
""" """
# 类型 电影、电视剧 # 类型 电影、电视剧
type: Optional[MediaType] type: Optional[MediaType] = None
# 季 # 季
seasons: Optional[Dict[int, list]] = Field(default_factory=dict) seasons: Optional[Dict[int, list]] = Field(default_factory=dict)
# 媒体服务器类型:plex、jellyfin、emby、trimemedia # 媒体服务器类型:plex、jellyfin、emby、trimemedia
+5 -5
View File
@@ -102,7 +102,7 @@ class Subscription(BaseModel):
""" """
客户端消息订阅 客户端消息订阅
""" """
endpoint: Optional[str] endpoint: Optional[str] = None
keys: Optional[dict] = Field(default_factory=dict) keys: Optional[dict] = Field(default_factory=dict)
@@ -110,8 +110,8 @@ class SubscriptionMessage(BaseModel):
""" """
客户端订阅消息体 客户端订阅消息体
""" """
title: Optional[str] title: Optional[str] = None
body: Optional[str] body: Optional[str] = None
icon: Optional[str] icon: Optional[str] = None
url: Optional[str] url: Optional[str] = None
data: Optional[dict] = Field(default_factory=dict) data: Optional[dict] = Field(default_factory=dict)