From f1f187fc77d709082496a429ed848e2d17f30cdf Mon Sep 17 00:00:00 2001 From: jxxghp Date: Wed, 22 May 2024 18:02:28 +0800 Subject: [PATCH] add media category api --- app/api/endpoints/media.py | 8 ++++++++ app/chain/__init__.py | 7 +++++++ app/modules/themoviedb/__init__.py | 13 ++++++++++++- app/schemas/__init__.py | 1 + app/schemas/filetransfer.py | 25 +++++++++++++++++++++++++ app/schemas/types.py | 6 ++++++ 6 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 app/schemas/filetransfer.py diff --git a/app/api/endpoints/media.py b/app/api/endpoints/media.py index 20a48d8d..0dcfbf89 100644 --- a/app/api/endpoints/media.py +++ b/app/api/endpoints/media.py @@ -119,6 +119,14 @@ def scrape(path: str, return schemas.Response(success=True, message="刮削完成") +@router.get("/category", summary="查询自动分类配置", response_model=dict) +def category(_: schemas.TokenPayload = Depends(verify_token)) -> Any: + """ + 查询自动分类配置 + """ + return MediaChain().media_category() or {} + + @router.get("/{mediaid}", summary="查询媒体详情", response_model=schemas.MediaInfo) def media_info(mediaid: str, type_name: str, _: schemas.TokenPayload = Depends(verify_token)) -> Any: diff --git a/app/chain/__init__.py b/app/chain/__init__.py index 45e1273d..cb4c7c75 100644 --- a/app/chain/__init__.py +++ b/app/chain/__init__.py @@ -506,6 +506,13 @@ class ChainBase(metaclass=ABCMeta): self.run_module("scrape_metadata", path=path, mediainfo=mediainfo, metainfo=metainfo, transfer_type=transfer_type, force_nfo=force_nfo, force_img=force_img) + def media_category(self) -> Optional[Dict[str, list]]: + """ + 获取媒体分类 + :return: 获取二级分类配置字典项,需包括电影、电视剧、动漫 + """ + return self.run_module("media_category") + def register_commands(self, commands: Dict[str, dict]) -> None: """ 注册菜单命令 diff --git a/app/modules/themoviedb/__init__.py b/app/modules/themoviedb/__init__.py index 8ce45f80..ded368df 100644 --- a/app/modules/themoviedb/__init__.py +++ b/app/modules/themoviedb/__init__.py @@ -1,5 +1,5 @@ from pathlib import Path -from typing import Optional, List, Tuple, Union +from typing import Optional, List, Tuple, Union, Dict import cn2an @@ -225,6 +225,17 @@ class TheMovieDbModule(_ModuleBase): """ return self.tmdb.get_info(mtype=mtype, tmdbid=tmdbid) + def media_category(self) -> Optional[Dict[str, list]]: + """ + 获取媒体分类 + :return: 获取二级分类配置字典项,需包括电影、电视剧、动漫 + """ + return { + "电影": list(self.category.movie_categorys), + "电视剧": list(self.category.tv_categorys), + "动漫": list(self.category.anime_categorys) + } + def search_medias(self, meta: MetaBase) -> Optional[List[MediaInfo]]: """ 搜索媒体信息 diff --git a/app/schemas/__init__.py b/app/schemas/__init__.py index 2781ea41..eb421d1b 100644 --- a/app/schemas/__init__.py +++ b/app/schemas/__init__.py @@ -14,3 +14,4 @@ from .message import * from .tmdb import * from .transfer import * from .file import * +from .filetransfer import * diff --git a/app/schemas/filetransfer.py b/app/schemas/filetransfer.py new file mode 100644 index 00000000..6d647604 --- /dev/null +++ b/app/schemas/filetransfer.py @@ -0,0 +1,25 @@ +from typing import Optional + +from pydantic import BaseModel + + +class MediaDirectory(BaseModel): + """ + 下载目录/媒体库目录 + """ + # 类型 download/library + type: Optional[str] = None + # 别名 + name: Optional[str] = None + # 路径 + path: Optional[str] = None + # 媒体类型 电影/电视剧 + media_type: Optional[str] = None + # 媒体类别 动画电影/国产剧 + category: Optional[str] = None + # 刮削媒体信息 + scrape: Optional[bool] = True + # 自动二级分类,未指定类别时自动分类 + auto_category: Optional[bool] = False + # 优先级 + priority: Optional[int] = 0 diff --git a/app/schemas/types.py b/app/schemas/types.py index 5b50ceca..58608a3f 100644 --- a/app/schemas/types.py +++ b/app/schemas/types.py @@ -84,6 +84,12 @@ class SystemConfigKey(Enum): PluginInstallReport = "PluginInstallReport" # 订阅统计 SubscribeReport = "SubscribeReport" + # 用户自定义CSS + UserCustomCSS = "UserCustomCSS" + # 下载目录定义 + DownloadDirectories = "DownloadDirectories" + # 媒体库目录定义 + LibraryDirectories = "LibraryDirectories" # 处理进度Key字典