fix api
This commit is contained in:
@ -98,24 +98,27 @@ def search(title: str,
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/scrape", summary="刮削媒体信息", response_model=schemas.Response)
|
@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:
|
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
||||||
"""
|
"""
|
||||||
刮削媒体信息
|
刮削媒体信息
|
||||||
"""
|
"""
|
||||||
if not path:
|
if not path:
|
||||||
return schemas.Response(success=False, message="刮削路径无效")
|
return schemas.Response(success=False, message="刮削路径无效")
|
||||||
scrape_path = Path(path)
|
|
||||||
if not scrape_path.exists():
|
|
||||||
return schemas.Response(success=False, message="刮削路径不存在")
|
|
||||||
# 识别
|
|
||||||
chain = MediaChain()
|
chain = MediaChain()
|
||||||
meta = MetaInfoPath(scrape_path)
|
# 识别媒体信息
|
||||||
|
meta = MetaInfoPath(path)
|
||||||
mediainfo = chain.recognize_media(meta)
|
mediainfo = chain.recognize_media(meta)
|
||||||
if not media_info:
|
if not media_info:
|
||||||
return schemas.Response(success=False, message="刮削失败,无法识别媒体信息")
|
return schemas.Response(success=False, message="刮削失败,无法识别媒体信息")
|
||||||
# 刮削
|
if storage == "local":
|
||||||
chain.scrape_metadata(path=scrape_path, mediainfo=mediainfo, transfer_type=settings.TRANSFER_TYPE)
|
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="刮削完成")
|
return schemas.Response(success=True, message="刮削完成")
|
||||||
|
|
||||||
|
|
||||||
|
@ -26,6 +26,17 @@ class MediaChain(ChainBase, metaclass=Singleton):
|
|||||||
# 临时识别结果 {title, name, year, season, episode}
|
# 临时识别结果 {title, name, year, season, episode}
|
||||||
recognize_temp: Optional[dict] = None
|
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]:
|
def recognize_by_meta(self, metainfo: MetaBase) -> Optional[MediaInfo]:
|
||||||
"""
|
"""
|
||||||
根据主副标题识别媒体信息
|
根据主副标题识别媒体信息
|
||||||
@ -316,13 +327,9 @@ class MediaChain(ChainBase, metaclass=Singleton):
|
|||||||
)
|
)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def meta_nfo(self, meta: MetaBase, mediainfo: MediaInfo,
|
def scrape_metadata_online(self, storage: str, path: str, 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)
|
# TODO: 远程刮削媒体信息
|
||||||
|
pass
|
||||||
|
@ -76,10 +76,10 @@ class AliyunHelper:
|
|||||||
if action:
|
if action:
|
||||||
if code == "DeviceSessionSignatureInvalid":
|
if code == "DeviceSessionSignatureInvalid":
|
||||||
logger.warn("设备已失效,正在重新建立会话...")
|
logger.warn("设备已失效,正在重新建立会话...")
|
||||||
self.__create_session(self.get_headers(self.__auth_params))
|
self.__create_session(self.__get_headers(self.__auth_params))
|
||||||
if code == "UserDeviceOffline":
|
if code == "UserDeviceOffline":
|
||||||
logger.warn("设备已离线,尝试重新登录,如仍报错请检查阿里云盘绑定设备数量是否超限!")
|
logger.warn("设备已离线,尝试重新登录,如仍报错请检查阿里云盘绑定设备数量是否超限!")
|
||||||
self.__create_session(self.get_headers(self.__auth_params))
|
self.__create_session(self.__get_headers(self.__auth_params))
|
||||||
if code == "AccessTokenInvalid":
|
if code == "AccessTokenInvalid":
|
||||||
logger.warn("访问令牌已失效,正在刷新令牌...")
|
logger.warn("访问令牌已失效,正在刷新令牌...")
|
||||||
self.__update_accesstoken(self.__auth_params, self.__auth_params.get("refreshToken"))
|
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(
|
res = RequestUtils(headers=headers, timeout=10).post_res(
|
||||||
self.update_accessstoken_url, json={
|
self.update_accessstoken_url, json={
|
||||||
"refresh_token": refresh_token,
|
"refresh_token": refresh_token,
|
||||||
@ -273,10 +273,10 @@ class AliyunHelper:
|
|||||||
update_device = True
|
update_device = True
|
||||||
# 更新设备信息重新创建会话
|
# 更新设备信息重新创建会话
|
||||||
if update_device:
|
if update_device:
|
||||||
self.__create_session(self.get_headers(params))
|
self.__create_session(self.__get_headers(params))
|
||||||
return 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
|
params = self.__access_params
|
||||||
if not params:
|
if not params:
|
||||||
return {}
|
return {}
|
||||||
headers = self.get_headers(params)
|
headers = self.__get_headers(params)
|
||||||
res = RequestUtils(headers=headers, timeout=10).post_res(self.user_info_url)
|
res = RequestUtils(headers=headers, timeout=10).post_res(self.user_info_url)
|
||||||
if res:
|
if res:
|
||||||
result = res.json()
|
result = res.json()
|
||||||
@ -326,7 +326,7 @@ class AliyunHelper:
|
|||||||
if not params:
|
if not params:
|
||||||
return []
|
return []
|
||||||
# 请求头
|
# 请求头
|
||||||
headers = self.get_headers(params)
|
headers = self.__get_headers(params)
|
||||||
# 根目录处理
|
# 根目录处理
|
||||||
if not drive_id:
|
if not drive_id:
|
||||||
return [
|
return [
|
||||||
@ -389,7 +389,7 @@ class AliyunHelper:
|
|||||||
params = self.__access_params
|
params = self.__access_params
|
||||||
if not params:
|
if not params:
|
||||||
return None
|
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={
|
res = RequestUtils(headers=headers, timeout=10).post_res(self.create_folder_url, json={
|
||||||
"drive_id": params.get("resourceDriveId"),
|
"drive_id": params.get("resourceDriveId"),
|
||||||
"parent_file_id": parent_file_id,
|
"parent_file_id": parent_file_id,
|
||||||
@ -428,7 +428,7 @@ class AliyunHelper:
|
|||||||
params = self.__access_params
|
params = self.__access_params
|
||||||
if not params:
|
if not params:
|
||||||
return False
|
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={
|
res = RequestUtils(headers=headers, timeout=10).post_res(self.delete_file_url, json={
|
||||||
"drive_id": params.get("resourceDriveId"),
|
"drive_id": params.get("resourceDriveId"),
|
||||||
"file_id": file_id
|
"file_id": file_id
|
||||||
@ -446,7 +446,7 @@ class AliyunHelper:
|
|||||||
params = self.__access_params
|
params = self.__access_params
|
||||||
if not params:
|
if not params:
|
||||||
return None
|
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={
|
res = RequestUtils(headers=headers, timeout=10).post_res(self.file_detail_url, json={
|
||||||
"drive_id": params.get("resourceDriveId"),
|
"drive_id": params.get("resourceDriveId"),
|
||||||
"file_id": file_id
|
"file_id": file_id
|
||||||
@ -464,7 +464,7 @@ class AliyunHelper:
|
|||||||
params = self.__access_params
|
params = self.__access_params
|
||||||
if not params:
|
if not params:
|
||||||
return False
|
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={
|
res = RequestUtils(headers=headers, timeout=10).post_res(self.rename_file_url, json={
|
||||||
"drive_id": params.get("resourceDriveId"),
|
"drive_id": params.get("resourceDriveId"),
|
||||||
"file_id": file_id,
|
"file_id": file_id,
|
||||||
@ -484,7 +484,7 @@ class AliyunHelper:
|
|||||||
params = self.__access_params
|
params = self.__access_params
|
||||||
if not params:
|
if not params:
|
||||||
return None
|
return None
|
||||||
headers = self.get_headers(params)
|
headers = self.__get_headers(params)
|
||||||
res = RequestUtils(headers=headers, timeout=10).post_res(self.download_url, json={
|
res = RequestUtils(headers=headers, timeout=10).post_res(self.download_url, json={
|
||||||
"drive_id": params.get("resourceDriveId"),
|
"drive_id": params.get("resourceDriveId"),
|
||||||
"file_id": file_id
|
"file_id": file_id
|
||||||
@ -502,7 +502,7 @@ class AliyunHelper:
|
|||||||
params = self.__access_params
|
params = self.__access_params
|
||||||
if not params:
|
if not params:
|
||||||
return False
|
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={
|
res = RequestUtils(headers=headers, timeout=10).post_res(self.move_file_url, json={
|
||||||
"drive_id": drive_id,
|
"drive_id": drive_id,
|
||||||
"file_id": file_id,
|
"file_id": file_id,
|
||||||
@ -522,7 +522,7 @@ class AliyunHelper:
|
|||||||
params = self.__access_params
|
params = self.__access_params
|
||||||
if not params:
|
if not params:
|
||||||
return None
|
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={
|
res = RequestUtils(headers=headers, timeout=10).post_res(self.create_file_url, json={
|
||||||
"drive_id": params.get("resourceDriveId"),
|
"drive_id": params.get("resourceDriveId"),
|
||||||
"parent_file_id": parent_file_id,
|
"parent_file_id": parent_file_id,
|
||||||
|
Reference in New Issue
Block a user