From bfbeae7fa73a70a7191c843ae1857d49f64ba049 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Fri, 21 Jun 2024 11:13:01 +0800 Subject: [PATCH] fix api --- app/api/endpoints/media.py | 19 +++++++++++-------- app/chain/media.py | 23 +++++++++++++++-------- app/helper/aliyun.py | 28 ++++++++++++++-------------- 3 files changed, 40 insertions(+), 30 deletions(-) diff --git a/app/api/endpoints/media.py b/app/api/endpoints/media.py index 3ac19202..0a1c4444 100644 --- a/app/api/endpoints/media.py +++ b/app/api/endpoints/media.py @@ -98,24 +98,27 @@ def search(title: str, @router.get("/scrape", summary="刮削媒体信息", response_model=schemas.Response) -def scrape(path: str, +def scrape(path: str, storage: str = "local", _: schemas.TokenPayload = Depends(verify_token)) -> Any: """ 刮削媒体信息 """ if not path: return schemas.Response(success=False, message="刮削路径无效") - scrape_path = Path(path) - if not scrape_path.exists(): - return schemas.Response(success=False, message="刮削路径不存在") - # 识别 chain = MediaChain() - meta = MetaInfoPath(scrape_path) + # 识别媒体信息 + meta = MetaInfoPath(path) mediainfo = chain.recognize_media(meta) if not media_info: return schemas.Response(success=False, message="刮削失败,无法识别媒体信息") - # 刮削 - chain.scrape_metadata(path=scrape_path, mediainfo=mediainfo, transfer_type=settings.TRANSFER_TYPE) + if storage == "local": + scrape_path = Path(path) + if not scrape_path.exists(): + return schemas.Response(success=False, message="刮削路径不存在") + # 刮削 + chain.scrape_metadata(path=scrape_path, mediainfo=mediainfo, transfer_type=settings.TRANSFER_TYPE) + else: + chain.scrape_metadata_online(storage=storage, path=path, mediainfo=mediainfo) return schemas.Response(success=True, message="刮削完成") diff --git a/app/chain/media.py b/app/chain/media.py index d8c42bf6..51eb0832 100644 --- a/app/chain/media.py +++ b/app/chain/media.py @@ -26,6 +26,17 @@ class MediaChain(ChainBase, metaclass=Singleton): # 临时识别结果 {title, name, year, season, episode} recognize_temp: Optional[dict] = None + def meta_nfo(self, meta: MetaBase, mediainfo: MediaInfo, + season: int = None, episode: int = None) -> Optional[str]: + """ + 获取NFO文件内容文本 + :param meta: 元数据 + :param mediainfo: 媒体信息 + :param season: 季号 + :param episode: 集号 + """ + return self.run_module("meta_nfo", meta=meta, mediainfo=mediainfo, season=season, episode=episode) + def recognize_by_meta(self, metainfo: MetaBase) -> Optional[MediaInfo]: """ 根据主副标题识别媒体信息 @@ -316,13 +327,9 @@ class MediaChain(ChainBase, metaclass=Singleton): ) return None - def meta_nfo(self, meta: MetaBase, mediainfo: MediaInfo, - season: int = None, episode: int = None) -> Optional[str]: + def scrape_metadata_online(self, storage: str, path: str, mediainfo: MediaInfo): """ - 获取NFO文件内容文本 - :param meta: 元数据 - :param mediainfo: 媒体信息 - :param season: 季号 - :param episode: 集号 + 远程刮削媒体信息(网盘等) """ - return self.run_module("meta_nfo", meta=meta, mediainfo=mediainfo, season=season, episode=episode) + # TODO: 远程刮削媒体信息 + pass diff --git a/app/helper/aliyun.py b/app/helper/aliyun.py index b3be63ae..e9fcda32 100644 --- a/app/helper/aliyun.py +++ b/app/helper/aliyun.py @@ -76,10 +76,10 @@ class AliyunHelper: if action: if code == "DeviceSessionSignatureInvalid": logger.warn("设备已失效,正在重新建立会话...") - self.__create_session(self.get_headers(self.__auth_params)) + self.__create_session(self.__get_headers(self.__auth_params)) if code == "UserDeviceOffline": logger.warn("设备已离线,尝试重新登录,如仍报错请检查阿里云盘绑定设备数量是否超限!") - self.__create_session(self.get_headers(self.__auth_params)) + self.__create_session(self.__get_headers(self.__auth_params)) if code == "AccessTokenInvalid": logger.warn("访问令牌已失效,正在刷新令牌...") self.__update_accesstoken(self.__auth_params, self.__auth_params.get("refreshToken")) @@ -192,7 +192,7 @@ class AliyunHelper: """ 更新阿里云盘访问令牌 """ - headers = self.get_headers(params) + headers = self.__get_headers(params) res = RequestUtils(headers=headers, timeout=10).post_res( self.update_accessstoken_url, json={ "refresh_token": refresh_token, @@ -273,10 +273,10 @@ class AliyunHelper: update_device = True # 更新设备信息重新创建会话 if update_device: - self.__create_session(self.get_headers(params)) + self.__create_session(self.__get_headers(params)) return params - def get_headers(self, params: dict): + def __get_headers(self, params: dict): """ 获取请求头 """ @@ -300,7 +300,7 @@ class AliyunHelper: params = self.__access_params if not params: return {} - headers = self.get_headers(params) + headers = self.__get_headers(params) res = RequestUtils(headers=headers, timeout=10).post_res(self.user_info_url) if res: result = res.json() @@ -326,7 +326,7 @@ class AliyunHelper: if not params: return [] # 请求头 - headers = self.get_headers(params) + headers = self.__get_headers(params) # 根目录处理 if not drive_id: return [ @@ -389,7 +389,7 @@ class AliyunHelper: params = self.__access_params if not params: return None - headers = self.get_headers(params) + headers = self.__get_headers(params) res = RequestUtils(headers=headers, timeout=10).post_res(self.create_folder_url, json={ "drive_id": params.get("resourceDriveId"), "parent_file_id": parent_file_id, @@ -428,7 +428,7 @@ class AliyunHelper: params = self.__access_params if not params: return False - headers = self.get_headers(params) + headers = self.__get_headers(params) res = RequestUtils(headers=headers, timeout=10).post_res(self.delete_file_url, json={ "drive_id": params.get("resourceDriveId"), "file_id": file_id @@ -446,7 +446,7 @@ class AliyunHelper: params = self.__access_params if not params: return None - headers = self.get_headers(params) + headers = self.__get_headers(params) res = RequestUtils(headers=headers, timeout=10).post_res(self.file_detail_url, json={ "drive_id": params.get("resourceDriveId"), "file_id": file_id @@ -464,7 +464,7 @@ class AliyunHelper: params = self.__access_params if not params: return False - headers = self.get_headers(params) + headers = self.__get_headers(params) res = RequestUtils(headers=headers, timeout=10).post_res(self.rename_file_url, json={ "drive_id": params.get("resourceDriveId"), "file_id": file_id, @@ -484,7 +484,7 @@ class AliyunHelper: params = self.__access_params if not params: return None - headers = self.get_headers(params) + headers = self.__get_headers(params) res = RequestUtils(headers=headers, timeout=10).post_res(self.download_url, json={ "drive_id": params.get("resourceDriveId"), "file_id": file_id @@ -502,7 +502,7 @@ class AliyunHelper: params = self.__access_params if not params: return False - headers = self.get_headers(params) + headers = self.__get_headers(params) res = RequestUtils(headers=headers, timeout=10).post_res(self.move_file_url, json={ "drive_id": drive_id, "file_id": file_id, @@ -522,7 +522,7 @@ class AliyunHelper: params = self.__access_params if not params: return None - headers = self.get_headers(params) + headers = self.__get_headers(params) res = RequestUtils(headers=headers, timeout=10).post_res(self.create_file_url, json={ "drive_id": params.get("resourceDriveId"), "parent_file_id": parent_file_id,