From 9a810f440d51cc20b48489d4f4e43a10efa3669f Mon Sep 17 00:00:00 2001 From: Shurelol Date: Thu, 26 Oct 2023 15:24:39 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E8=BD=AC?= =?UTF-8?q?=E7=A7=BB=E8=A6=86=E7=9B=96=E6=A8=A1=E5=BC=8F=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ app/core/config.py | 2 ++ app/modules/filetransfer/__init__.py | 17 ++++++++++++++--- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2f3fcf51..368931a0 100644 --- a/README.md +++ b/README.md @@ -199,6 +199,8 @@ MoviePilot需要配套下载器和媒体服务器配合使用。 - **BIG_MEMORY_MODE:** 大内存模式,默认为`false`,开启后会占用更多的内存,但响应速度会更快 +- **OVERWRITE_MODE:** 转移覆盖模式,默认为`nerver`,支持`nerver`/`size`/`always`,分别表示`不覆盖`/`根据大小覆盖(大覆盖小)`/`总是覆盖` + - **MOVIE_RENAME_FORMAT:** 电影重命名格式 `MOVIE_RENAME_FORMAT`支持的配置项: diff --git a/app/core/config.py b/app/core/config.py index 4f657ffc..f5f2cbf5 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -204,6 +204,8 @@ class Settings(BaseSettings): "/Season {{season}}" \ "/{{title}} - {{season_episode}}{% if part %}-{{part}}{% endif %}{% if episode %} - 第 {{episode}} 集{% endif %}" \ "{{fileExt}}" + # 转移时覆盖模式 + OVERWRITE_MODE: str = "nerver" # 大内存模式 BIG_MEMORY_MODE: bool = False diff --git a/app/modules/filetransfer/__init__.py b/app/modules/filetransfer/__init__.py index c94bac0b..6244b752 100644 --- a/app/modules/filetransfer/__init__.py +++ b/app/modules/filetransfer/__init__.py @@ -468,9 +468,20 @@ class FileTransferModule(_ModuleBase): # 判断是否要覆盖 overflag = False if new_file.exists(): - if new_file.stat().st_size < in_path.stat().st_size: - logger.info(f"目标文件已存在,但文件大小更小,将覆盖:{new_file}") - overflag = True + # 目标文件已存在 + match settings.OVERWRITE_MODE: + case 'always': + overflag = True + logger.info(f"目标文件已存在,将被覆盖:{new_file}") + case 'size': + if new_file.stat().st_size < in_path.stat().st_size: + logger.info(f"目标文件已存在,但文件大小更小,将被覆盖:{new_file}") + overflag = True + case 'never': + overflag = False + logger.info(f"目标文件已存在,停止转移") + case _: + pass # 原文件大小 file_size = in_path.stat().st_size # 转移文件 From 2a524eaf22e92be3182654747a615327906aebd5 Mon Sep 17 00:00:00 2001 From: Shurelol Date: Thu, 26 Oct 2023 15:28:41 +0800 Subject: [PATCH 2/5] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E8=BD=AC?= =?UTF-8?q?=E7=A7=BB=E8=A6=86=E7=9B=96=E6=A8=A1=E5=BC=8F=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/modules/filetransfer/__init__.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/modules/filetransfer/__init__.py b/app/modules/filetransfer/__init__.py index 6244b752..5d9ffa86 100644 --- a/app/modules/filetransfer/__init__.py +++ b/app/modules/filetransfer/__init__.py @@ -469,17 +469,18 @@ class FileTransferModule(_ModuleBase): overflag = False if new_file.exists(): # 目标文件已存在 + logger.info(f"目标文件已存在,转移覆盖模式:{settings.OVERWRITE_MODE}") match settings.OVERWRITE_MODE: case 'always': overflag = True - logger.info(f"目标文件已存在,将被覆盖:{new_file}") case 'size': if new_file.stat().st_size < in_path.stat().st_size: - logger.info(f"目标文件已存在,但文件大小更小,将被覆盖:{new_file}") + logger.info(f"目标文件文件大小更小,将被覆盖:{new_file}") overflag = True + else: + logger.info(f"目标文件文件大小更大,跳过转移:{new_file}") case 'never': overflag = False - logger.info(f"目标文件已存在,停止转移") case _: pass # 原文件大小 From dc6051f0b09effb1b9406b61000630a178cc78c6 Mon Sep 17 00:00:00 2001 From: Shurelol Date: Thu, 26 Oct 2023 15:49:33 +0800 Subject: [PATCH 3/5] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E8=BD=AC?= =?UTF-8?q?=E7=A7=BB=E8=A6=86=E7=9B=96=E6=A8=A1=E5=BC=8F=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/modules/filetransfer/__init__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/modules/filetransfer/__init__.py b/app/modules/filetransfer/__init__.py index 5d9ffa86..0ae3b9b7 100644 --- a/app/modules/filetransfer/__init__.py +++ b/app/modules/filetransfer/__init__.py @@ -480,7 +480,11 @@ class FileTransferModule(_ModuleBase): else: logger.info(f"目标文件文件大小更大,跳过转移:{new_file}") case 'never': - overflag = False + return TransferInfo(success=False, + message=f"目标文件已存在,转移覆盖模式:{settings.OVERWRITE_MODE}", + path=in_path, + target_path=new_file, + fail_list=[str(in_path)]) case _: pass # 原文件大小 From 10445c6f568a8d8c2051b1a4333437c9e01727c7 Mon Sep 17 00:00:00 2001 From: Shurelol Date: Thu, 26 Oct 2023 15:51:17 +0800 Subject: [PATCH 4/5] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E8=BD=AC?= =?UTF-8?q?=E7=A7=BB=E8=A6=86=E7=9B=96=E6=A8=A1=E5=BC=8F=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/modules/filetransfer/__init__.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/modules/filetransfer/__init__.py b/app/modules/filetransfer/__init__.py index 0ae3b9b7..21c05fe3 100644 --- a/app/modules/filetransfer/__init__.py +++ b/app/modules/filetransfer/__init__.py @@ -477,16 +477,16 @@ class FileTransferModule(_ModuleBase): if new_file.stat().st_size < in_path.stat().st_size: logger.info(f"目标文件文件大小更小,将被覆盖:{new_file}") overflag = True - else: - logger.info(f"目标文件文件大小更大,跳过转移:{new_file}") case 'never': - return TransferInfo(success=False, - message=f"目标文件已存在,转移覆盖模式:{settings.OVERWRITE_MODE}", - path=in_path, - target_path=new_file, - fail_list=[str(in_path)]) + pass case _: pass + if not overflag: + return TransferInfo(success=False, + message=f"目标文件已存在,转移覆盖模式:{settings.OVERWRITE_MODE}", + path=in_path, + target_path=new_file, + fail_list=[str(in_path)]) # 原文件大小 file_size = in_path.stat().st_size # 转移文件 From 4af57ed861473fde36dc8cd1754e59a2f633e7e2 Mon Sep 17 00:00:00 2001 From: Shurelol Date: Thu, 26 Oct 2023 15:55:09 +0800 Subject: [PATCH 5/5] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E8=BD=AC?= =?UTF-8?q?=E7=A7=BB=E8=A6=86=E7=9B=96=E6=A8=A1=E5=BC=8F=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 368931a0..16879235 100644 --- a/README.md +++ b/README.md @@ -199,7 +199,7 @@ MoviePilot需要配套下载器和媒体服务器配合使用。 - **BIG_MEMORY_MODE:** 大内存模式,默认为`false`,开启后会占用更多的内存,但响应速度会更快 -- **OVERWRITE_MODE:** 转移覆盖模式,默认为`nerver`,支持`nerver`/`size`/`always`,分别表示`不覆盖`/`根据大小覆盖(大覆盖小)`/`总是覆盖` +- **OVERWRITE_MODE:** 转移覆盖模式,默认为`nerver`,支持`nerver`/`size`/`always`,分别表示`不覆盖`/`根据文件大小覆盖(大覆盖小)`/`总是覆盖` - **MOVIE_RENAME_FORMAT:** 电影重命名格式