From cc9610e63ec9f0e6311c8a5c0377d7a59fcdc0eb Mon Sep 17 00:00:00 2001 From: Lei Shi Date: Mon, 21 Feb 2022 17:14:02 +0100 Subject: [PATCH] Add create_folder flag --- differential/constants.py | 7 ++++--- differential/plugins/base.py | 22 +++++++++++++++++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/differential/constants.py b/differential/constants.py index b32d497..950cd5c 100644 --- a/differential/constants.py +++ b/differential/constants.py @@ -23,6 +23,7 @@ "use_short_url", "reuse_torrent", "scan_bdinfo", + "create_folder", ) URL_SHORTENER_PATH = "https://lg.to" @@ -41,17 +42,17 @@ class ImageHosting(Enum): def parse(s: str): if isinstance(s, ImageHosting): return s - if s.lower() == "ptpimg": + if s.lower() == "ptpimg" or s.lower() == 'ptp': return ImageHosting.PTPIMG elif s.lower() == "imgurl": return ImageHosting.IMGURL elif s.lower() == "chevereto": return ImageHosting.CHEVERETO - elif s.lower() == "smms": + elif s.lower() == "smms" or s.lower() == "sm.ms": return ImageHosting.SMMS elif s.lower() == "byr": return ImageHosting.BYR - elif s.lower() == "hdb": + elif s.lower() == "hdb" or s.lower() == 'hdbits': return ImageHosting.HDB elif s.lower() == "imgbox": return ImageHosting.IMGBOX diff --git a/differential/plugins/base.py b/differential/plugins/base.py index f1a155f..a14b0ad 100644 --- a/differential/plugins/base.py +++ b/differential/plugins/base.py @@ -138,6 +138,13 @@ def add_parser(cls, parser: argparse.ArgumentParser) -> argparse.ArgumentParser: help="截图数量,默认为0,即不生成截图", default=argparse.SUPPRESS, ) + parser.add_argument( + "--create-folder", + action="store_true", + dest="create_folder", + help="如果目标为文件,创建文件夹并把目标文件放入其中", + default=argparse.SUPPRESS, + ) parser.add_argument( "--use-short-bdinfo", action="store_true", @@ -320,6 +327,7 @@ def __init__( upload_url: str, screenshot_count: int = 0, optimize_screenshot: bool = True, + create_folder: bool = False, use_short_bdinfo: bool = False, scan_bdinfo: bool = True, image_hosting: ImageHosting = ImageHosting.PTPIMG, @@ -358,6 +366,7 @@ def __init__( self.upload_url = upload_url self.screenshot_count = screenshot_count self.optimize_screenshot = optimize_screenshot + self.create_folder = create_folder self.use_short_bdinfo = use_short_bdinfo self.scan_bdinfo = scan_bdinfo self.image_hosting = image_hosting @@ -599,7 +608,18 @@ def _find_mediainfo(self) -> MediaInfo: logger.info(f"正在获取Mediainfo: {self.folder}") has_bdmv = False if self.folder.is_file(): - self._main_file = self.folder + if not self.create_folder: + self._main_file = self.folder + else: + logger.info("目标是文件,正在创建文件夹...") + folder = self.folder.parent.joinpath(self.folder.stem) + filename = self.folder.name + # TODO: decide whether to add exist_ok=True + if not folder.is_dir(): + os.makedirs(folder) + shutil.move(str(self.folder.absolute()), folder) + self.folder = folder + self._main_file = folder.joinpath(filename) else: logger.info("目标为文件夹,正在获取最大的文件...") biggest_size = -1