Skip to content

Commit

Permalink
add remote transfer
Browse files Browse the repository at this point in the history
  • Loading branch information
jxxghp committed Jun 23, 2024
1 parent e06e002 commit 1e1f80b
Show file tree
Hide file tree
Showing 8 changed files with 545 additions and 278 deletions.
2 changes: 1 addition & 1 deletion app/api/endpoints/aliyun.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ def delete_aliyun(fileitem: schemas.FileItem,
"""
if not fileitem.fileid:
return schemas.Response(success=False)
result = AliyunHelper().delete(fileitem.fileid)
result = AliyunHelper().delete(drive_id=fileitem.drive_id, file_id=fileitem.fileid)
if result:
return schemas.Response(success=True)
return schemas.Response(success=False)
Expand Down
9 changes: 9 additions & 0 deletions app/api/endpoints/transfer.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ def query_name(path: str, filetype: str,
@router.post("/manual", summary="手动转移", response_model=schemas.Response)
def manual_transfer(storage: str = "local",
path: str = None,
drive_id: str = None,
fileid: str = None,
filetype: str = None,
logid: int = None,
target: str = None,
tmdbid: int = None,
Expand All @@ -67,6 +70,9 @@ def manual_transfer(storage: str = "local",
手动转移,文件或历史记录,支持自定义剧集识别格式
:param storage: 存储类型:local/aliyun/u115
:param path: 转移路径或文件
:param drive_id: 云盘ID(网盘等)
:param fileid: 文件ID(网盘等)
:param filetype: 文件类型,dir/file
:param logid: 转移历史记录ID
:param target: 目标路径
:param type_name: 媒体类型、电影/电视剧
Expand Down Expand Up @@ -123,6 +129,9 @@ def manual_transfer(storage: str = "local",
state, errormsg = transfer.manual_transfer(
storage=storage,
in_path=in_path,
drive_id=drive_id,
fileid=fileid,
filetype=filetype,
target=target,
tmdbid=tmdbid,
doubanid=doubanid,
Expand Down
2 changes: 2 additions & 0 deletions app/chain/media.py
Original file line number Diff line number Diff line change
Expand Up @@ -399,6 +399,8 @@ def __save_image(_url: str) -> Optional[bytes]:
if fileitem.type == "file" \
and (not filepath.suffix or filepath.suffix.lower() not in settings.RMT_MEDIAEXT):
return
if not mediainfo:
return
logger.info(f"开始刮削:{filepath} ...")
if mediainfo.type == MediaType.MOVIE:
# 电影
Expand Down
757 changes: 504 additions & 253 deletions app/chain/transfer.py

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions app/helper/aliyun.py
Original file line number Diff line number Diff line change
Expand Up @@ -438,7 +438,7 @@ def create_folder(self, drive_id: str, parent_file_id: str, name: str, path: str
self.__handle_error(res, "创建目录")
return None

def delete(self, file_id: str) -> bool:
def delete(self, drive_id: str, file_id: str) -> bool:
"""
删除文件
"""
Expand All @@ -447,7 +447,7 @@ def delete(self, file_id: str) -> bool:
return False
headers = self.__get_headers(params)
res = RequestUtils(headers=headers, timeout=10).post_res(self.delete_file_url, json={
"drive_id": params.get("resourceDriveId"),
"drive_id": drive_id,
"file_id": file_id
})
if res:
Expand Down Expand Up @@ -571,7 +571,7 @@ def upload(self, drive_id: str, parent_file_id: str, file_path: Path) -> Optiona
return None
# 获取上传参数
result = res.json()
if result.get("'exist'"):
if result.get("exist"):
logger.info(f"文件{result.get('file_name')}已存在,无需上传")
return schemas.FileItem(
drive_id=result.get("drive_id"),
Expand Down
5 changes: 3 additions & 2 deletions app/modules/douban/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -775,14 +775,15 @@ def metadata_nfo(self, mediainfo: MediaInfo, season: int = None, **kwargs) -> Op
return None
return self.scraper.get_metadata_nfo(mediainfo=mediainfo, season=season)

def metadata_img(self, mediainfo: MediaInfo, **kwargs) -> Optional[dict]:
def metadata_img(self, mediainfo: MediaInfo, season: int = None) -> Optional[dict]:
"""
获取图片名称和url
:param mediainfo: 媒体信息
:param season: 季号
"""
if settings.SCRAP_SOURCE != "douban":
return None
return self.scraper.get_metadata_img(mediainfo=mediainfo)
return self.scraper.get_metadata_img(mediainfo=mediainfo, season=season)

def obtain_images(self, mediainfo: MediaInfo) -> Optional[MediaInfo]:
"""
Expand Down
6 changes: 5 additions & 1 deletion app/modules/douban/scraper.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,16 @@ def get_metadata_nfo(self, mediainfo: MediaInfo, season: int = None) -> Optional
return None

@staticmethod
def get_metadata_img(mediainfo: MediaInfo) -> Optional[dict]:
def get_metadata_img(mediainfo: MediaInfo, season: int = None) -> Optional[dict]:
"""
获取图片内容
:param mediainfo: 媒体信息
:param season: 季号
"""
ret_dict = {}
if season:
# 豆瓣无季图片
return {}
if mediainfo.poster_path:
ret_dict[f"poster{Path(mediainfo.poster_path).suffix}"] = mediainfo.poster_path
if mediainfo.backdrop_path:
Expand Down
36 changes: 18 additions & 18 deletions app/modules/themoviedb/scraper.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,24 +65,24 @@ def get_metadata_img(self, mediainfo: MediaInfo, season: int = None) -> dict:
:param season: 季号
"""
images = {}
if mediainfo.type == MediaType.MOVIE:
for attr_name, attr_value in vars(mediainfo).items():
if attr_value \
and attr_name.endswith("_path") \
and attr_value \
and isinstance(attr_value, str) \
and attr_value.startswith("http"):
image_name = attr_name.replace("_path", "") + Path(attr_value).suffix
images[image_name] = attr_value
else:
if season:
# 查询季信息
seasoninfo = self.tmdb.get_tv_season_detail(mediainfo.tmdb_id, season)
if seasoninfo:
# TMDB季poster图片
poster_name, poster_url = self.get_season_poster(seasoninfo, season)
if poster_name and poster_url:
images[poster_name] = poster_url
if season:
# 只需要季的图片
seasoninfo = self.tmdb.get_tv_season_detail(mediainfo.tmdb_id, season)
if seasoninfo:
# TMDB季poster图片
poster_name, poster_url = self.get_season_poster(seasoninfo, season)
if poster_name and poster_url:
images[poster_name] = poster_url
return images
# 主媒体图片
for attr_name, attr_value in vars(mediainfo).items():
if attr_value \
and attr_name.endswith("_path") \
and attr_value \
and isinstance(attr_value, str) \
and attr_value.startswith("http"):
image_name = attr_name.replace("_path", "") + Path(attr_value).suffix
images[image_name] = attr_value
return images

@staticmethod
Expand Down

0 comments on commit 1e1f80b

Please sign in to comment.