From 7a94cea732548bf966127e18f6b70e4ec5454ed9 Mon Sep 17 00:00:00 2001 From: EstrellaXD Date: Fri, 15 Jul 2022 22:24:08 +0800 Subject: [PATCH] =?UTF-8?q?2.5.11=20-=20=E9=87=8D=E6=9E=84=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=20-=20=E5=AE=8C=E6=88=90=20repath=20=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dockerignore | 4 +- .gitignore | 10 ++--- Dockerfile | 2 +- {auto_bangumi => src}/__init__.py | 0 {auto_bangumi => src}/__main__.py | 0 .../ab_decorator/__init__.py | 0 {auto_bangumi => src}/api.py | 0 {auto_bangumi => src}/app.py | 0 {auto_bangumi => src}/conf/__init__.py | 0 {auto_bangumi => src}/conf/conf.py | 0 {auto_bangumi => src}/conf/const.py | 0 {auto_bangumi => src}/conf/log.py | 0 {auto_bangumi => src}/conf/parse.py | 0 {auto_bangumi => src}/core/__init__.py | 0 {auto_bangumi => src}/core/api_func.py | 0 {auto_bangumi => src}/core/download_client.py | 0 {auto_bangumi => src}/core/download_fliter.py | 0 {auto_bangumi => src}/core/eps_complete.py | 0 {auto_bangumi => src}/core/renamer.py | 0 {auto_bangumi => src}/core/repath.py | 42 ++++++++++--------- {auto_bangumi => src}/core/rss_analyser.py | 0 {auto_bangumi => src}/downloader/__init__.py | 0 .../downloader/aria2_downloader.py | 0 .../downloader/exceptions.py | 0 .../downloader/qb_downloader.py | 0 .../downloader/tr_downloader.py | 0 {auto_bangumi => src}/network/__init__.py | 0 {auto_bangumi => src}/network/notification.py | 0 {auto_bangumi => src}/network/request.py | 0 {auto_bangumi => src}/parser/__init__.py | 0 .../parser/analyser/__init__.py | 0 .../parser/analyser/bgm_parser.py | 0 .../parser/analyser/raw_parser.py | 0 .../parser/analyser/rename_parser.py | 0 .../parser/analyser/simple_analyser.py | 0 .../parser/analyser/tmdb_parser.py | 0 {auto_bangumi => src}/parser/episode.py | 0 {auto_bangumi => src}/parser/fuzz_match.py | 0 {auto_bangumi => src}/parser/title_parser.py | 0 {auto_bangumi => src}/run.sh | 0 .../tests/test_raw_parser.py | 0 {auto_bangumi => src}/utils/__init__.py | 0 {auto_bangumi => src}/utils/json_config.py | 0 43 files changed, 31 insertions(+), 27 deletions(-) rename {auto_bangumi => src}/__init__.py (100%) rename {auto_bangumi => src}/__main__.py (100%) rename {auto_bangumi => src}/ab_decorator/__init__.py (100%) rename {auto_bangumi => src}/api.py (100%) rename {auto_bangumi => src}/app.py (100%) rename {auto_bangumi => src}/conf/__init__.py (100%) rename {auto_bangumi => src}/conf/conf.py (100%) rename {auto_bangumi => src}/conf/const.py (100%) rename {auto_bangumi => src}/conf/log.py (100%) rename {auto_bangumi => src}/conf/parse.py (100%) rename {auto_bangumi => src}/core/__init__.py (100%) rename {auto_bangumi => src}/core/api_func.py (100%) rename {auto_bangumi => src}/core/download_client.py (100%) rename {auto_bangumi => src}/core/download_fliter.py (100%) rename {auto_bangumi => src}/core/eps_complete.py (100%) rename {auto_bangumi => src}/core/renamer.py (100%) rename {auto_bangumi => src}/core/repath.py (66%) rename {auto_bangumi => src}/core/rss_analyser.py (100%) rename {auto_bangumi => src}/downloader/__init__.py (100%) rename {auto_bangumi => src}/downloader/aria2_downloader.py (100%) rename {auto_bangumi => src}/downloader/exceptions.py (100%) rename {auto_bangumi => src}/downloader/qb_downloader.py (100%) rename {auto_bangumi => src}/downloader/tr_downloader.py (100%) rename {auto_bangumi => src}/network/__init__.py (100%) rename {auto_bangumi => src}/network/notification.py (100%) rename {auto_bangumi => src}/network/request.py (100%) rename {auto_bangumi => src}/parser/__init__.py (100%) rename {auto_bangumi => src}/parser/analyser/__init__.py (100%) rename {auto_bangumi => src}/parser/analyser/bgm_parser.py (100%) rename {auto_bangumi => src}/parser/analyser/raw_parser.py (100%) rename {auto_bangumi => src}/parser/analyser/rename_parser.py (100%) rename {auto_bangumi => src}/parser/analyser/simple_analyser.py (100%) rename {auto_bangumi => src}/parser/analyser/tmdb_parser.py (100%) rename {auto_bangumi => src}/parser/episode.py (100%) rename {auto_bangumi => src}/parser/fuzz_match.py (100%) rename {auto_bangumi => src}/parser/title_parser.py (100%) rename {auto_bangumi => src}/run.sh (100%) rename {auto_bangumi => src}/tests/test_raw_parser.py (100%) rename {auto_bangumi => src}/utils/__init__.py (100%) rename {auto_bangumi => src}/utils/json_config.py (100%) diff --git a/.dockerignore b/.dockerignore index d54de7e3..dda4fb95 100644 --- a/.dockerignore +++ b/.dockerignore @@ -19,6 +19,6 @@ coverage.xml .pytest_cache .hypothesis -auto_bangumi/tests -auto_bangumi/conf/const_dev.py +src/tests +src/conf/const_dev.py config/bangumi.json/config/bangumi.json diff --git a/.gitignore b/.gitignore index 01ff96de..94bef83b 100644 --- a/.gitignore +++ b/.gitignore @@ -162,11 +162,11 @@ cython_debug/ #.idea/ # Custom -/auto_bangumi/conf/const_dev.py +/src/conf/const_dev.py /config -/auto_bangumi/tester.py +/src/tester.py -/auto_bangumi/parser/analyser/tmdb_parser.py +/src/parser/analyser/tmdb_parser.py -/auto_bangumi/run_debug.sh -/auto_bangumi/debug_run.sh +/src/run_debug.sh +/src/debug_run.sh diff --git a/Dockerfile b/Dockerfile index 814f48e4..b0449abc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,7 +9,7 @@ RUN pip install -r requirements.txt ENV TZ=Asia/Shanghai -ADD ./auto_bangumi /auto_bangumi +ADD src /auto_bangumi RUN mkdir /config ADD ./templates /templates diff --git a/auto_bangumi/__init__.py b/src/__init__.py similarity index 100% rename from auto_bangumi/__init__.py rename to src/__init__.py diff --git a/auto_bangumi/__main__.py b/src/__main__.py similarity index 100% rename from auto_bangumi/__main__.py rename to src/__main__.py diff --git a/auto_bangumi/ab_decorator/__init__.py b/src/ab_decorator/__init__.py similarity index 100% rename from auto_bangumi/ab_decorator/__init__.py rename to src/ab_decorator/__init__.py diff --git a/auto_bangumi/api.py b/src/api.py similarity index 100% rename from auto_bangumi/api.py rename to src/api.py diff --git a/auto_bangumi/app.py b/src/app.py similarity index 100% rename from auto_bangumi/app.py rename to src/app.py diff --git a/auto_bangumi/conf/__init__.py b/src/conf/__init__.py similarity index 100% rename from auto_bangumi/conf/__init__.py rename to src/conf/__init__.py diff --git a/auto_bangumi/conf/conf.py b/src/conf/conf.py similarity index 100% rename from auto_bangumi/conf/conf.py rename to src/conf/conf.py diff --git a/auto_bangumi/conf/const.py b/src/conf/const.py similarity index 100% rename from auto_bangumi/conf/const.py rename to src/conf/const.py diff --git a/auto_bangumi/conf/log.py b/src/conf/log.py similarity index 100% rename from auto_bangumi/conf/log.py rename to src/conf/log.py diff --git a/auto_bangumi/conf/parse.py b/src/conf/parse.py similarity index 100% rename from auto_bangumi/conf/parse.py rename to src/conf/parse.py diff --git a/auto_bangumi/core/__init__.py b/src/core/__init__.py similarity index 100% rename from auto_bangumi/core/__init__.py rename to src/core/__init__.py diff --git a/auto_bangumi/core/api_func.py b/src/core/api_func.py similarity index 100% rename from auto_bangumi/core/api_func.py rename to src/core/api_func.py diff --git a/auto_bangumi/core/download_client.py b/src/core/download_client.py similarity index 100% rename from auto_bangumi/core/download_client.py rename to src/core/download_client.py diff --git a/auto_bangumi/core/download_fliter.py b/src/core/download_fliter.py similarity index 100% rename from auto_bangumi/core/download_fliter.py rename to src/core/download_fliter.py diff --git a/auto_bangumi/core/eps_complete.py b/src/core/eps_complete.py similarity index 100% rename from auto_bangumi/core/eps_complete.py rename to src/core/eps_complete.py diff --git a/auto_bangumi/core/renamer.py b/src/core/renamer.py similarity index 100% rename from auto_bangumi/core/renamer.py rename to src/core/renamer.py diff --git a/auto_bangumi/core/repath.py b/src/core/repath.py similarity index 66% rename from auto_bangumi/core/repath.py rename to src/core/repath.py index c73db3e7..b7afda32 100644 --- a/auto_bangumi/core/repath.py +++ b/src/core/repath.py @@ -1,3 +1,4 @@ +import pathlib import re from dataclasses import dataclass from pathlib import PurePath, PureWindowsPath @@ -9,14 +10,15 @@ from utils import json_config @dataclass class RuleInfo: rule_name: str + contain: str season: int folder_name: str + new_path: str @dataclass class RePathInfo: - name: str - season: int + path: str hashes: list @@ -43,8 +45,10 @@ class RePath: all_rule = [] for rule in rules: path = rules.get(rule).savePath + must_contain = rules.get(rule).mustContain season, folder_name = self.analyse_path(path) - all_rule.append(RuleInfo(rule, season, folder_name)) + new_path = PurePath(settings.download_path, folder_name, f"Season {season}").__str__() + all_rule.append(RuleInfo(rule, must_contain, season, folder_name, new_path)) return all_rule def get_difference(self, bangumi_data: list, rules: list): @@ -59,27 +63,28 @@ class RePath: break return different_data - def get_matched_torrents_list(self, difference_data: list) -> [RePathInfo]: + def get_matched_torrents_list(self, repath_rules: [RuleInfo]) -> [RePathInfo]: infos = self._client.get_torrent_info() repath_list = [] - for data in difference_data: + for rule in repath_rules: + hashes = [] for info in infos: - if re.search(data["raw_title"], info.name): - repath_list.append(RePathInfo(data["name"], data["season"], [info.hash])) + if re.search(rule.contain, info.name): + if rule.new_path != info.save_path: + hashes.append(info.hash) + infos.remove(info) + if hashes: + repath_list.append(RePathInfo(rule.new_path, hashes)) return repath_list - def re_path(self, hashes, season): - old_path = self._client.get_torrent_path(hashes) - new_path = re.sub(r"Season \d", f"Season {season}", old_path) - self._client.move_torrent(hashes, new_path) + def re_path(self, repath_info: RePathInfo): + self._client.move_torrent(repath_info.hashes, repath_info.path) - # def get_hashes(self): - def run(self, bangumi_data: list): + def run(self): rules = self.get_rule() - different_data = self.get_difference(bangumi_data, rules) - repath_list = self.get_matched_torrents_list(different_data) - for group in repath_list: - self.re_path(group.hashes, group.season) + match_list = self.get_matched_torrents_list(rules) + for list in match_list: + self.re_path(list) if __name__ == '__main__': @@ -87,5 +92,4 @@ if __name__ == '__main__': settings.init(DEV_SETTINGS) client = DownloadClient() r = RePath(client) - data = [] - r.run(data) + r.run() diff --git a/auto_bangumi/core/rss_analyser.py b/src/core/rss_analyser.py similarity index 100% rename from auto_bangumi/core/rss_analyser.py rename to src/core/rss_analyser.py diff --git a/auto_bangumi/downloader/__init__.py b/src/downloader/__init__.py similarity index 100% rename from auto_bangumi/downloader/__init__.py rename to src/downloader/__init__.py diff --git a/auto_bangumi/downloader/aria2_downloader.py b/src/downloader/aria2_downloader.py similarity index 100% rename from auto_bangumi/downloader/aria2_downloader.py rename to src/downloader/aria2_downloader.py diff --git a/auto_bangumi/downloader/exceptions.py b/src/downloader/exceptions.py similarity index 100% rename from auto_bangumi/downloader/exceptions.py rename to src/downloader/exceptions.py diff --git a/auto_bangumi/downloader/qb_downloader.py b/src/downloader/qb_downloader.py similarity index 100% rename from auto_bangumi/downloader/qb_downloader.py rename to src/downloader/qb_downloader.py diff --git a/auto_bangumi/downloader/tr_downloader.py b/src/downloader/tr_downloader.py similarity index 100% rename from auto_bangumi/downloader/tr_downloader.py rename to src/downloader/tr_downloader.py diff --git a/auto_bangumi/network/__init__.py b/src/network/__init__.py similarity index 100% rename from auto_bangumi/network/__init__.py rename to src/network/__init__.py diff --git a/auto_bangumi/network/notification.py b/src/network/notification.py similarity index 100% rename from auto_bangumi/network/notification.py rename to src/network/notification.py diff --git a/auto_bangumi/network/request.py b/src/network/request.py similarity index 100% rename from auto_bangumi/network/request.py rename to src/network/request.py diff --git a/auto_bangumi/parser/__init__.py b/src/parser/__init__.py similarity index 100% rename from auto_bangumi/parser/__init__.py rename to src/parser/__init__.py diff --git a/auto_bangumi/parser/analyser/__init__.py b/src/parser/analyser/__init__.py similarity index 100% rename from auto_bangumi/parser/analyser/__init__.py rename to src/parser/analyser/__init__.py diff --git a/auto_bangumi/parser/analyser/bgm_parser.py b/src/parser/analyser/bgm_parser.py similarity index 100% rename from auto_bangumi/parser/analyser/bgm_parser.py rename to src/parser/analyser/bgm_parser.py diff --git a/auto_bangumi/parser/analyser/raw_parser.py b/src/parser/analyser/raw_parser.py similarity index 100% rename from auto_bangumi/parser/analyser/raw_parser.py rename to src/parser/analyser/raw_parser.py diff --git a/auto_bangumi/parser/analyser/rename_parser.py b/src/parser/analyser/rename_parser.py similarity index 100% rename from auto_bangumi/parser/analyser/rename_parser.py rename to src/parser/analyser/rename_parser.py diff --git a/auto_bangumi/parser/analyser/simple_analyser.py b/src/parser/analyser/simple_analyser.py similarity index 100% rename from auto_bangumi/parser/analyser/simple_analyser.py rename to src/parser/analyser/simple_analyser.py diff --git a/auto_bangumi/parser/analyser/tmdb_parser.py b/src/parser/analyser/tmdb_parser.py similarity index 100% rename from auto_bangumi/parser/analyser/tmdb_parser.py rename to src/parser/analyser/tmdb_parser.py diff --git a/auto_bangumi/parser/episode.py b/src/parser/episode.py similarity index 100% rename from auto_bangumi/parser/episode.py rename to src/parser/episode.py diff --git a/auto_bangumi/parser/fuzz_match.py b/src/parser/fuzz_match.py similarity index 100% rename from auto_bangumi/parser/fuzz_match.py rename to src/parser/fuzz_match.py diff --git a/auto_bangumi/parser/title_parser.py b/src/parser/title_parser.py similarity index 100% rename from auto_bangumi/parser/title_parser.py rename to src/parser/title_parser.py diff --git a/auto_bangumi/run.sh b/src/run.sh similarity index 100% rename from auto_bangumi/run.sh rename to src/run.sh diff --git a/auto_bangumi/tests/test_raw_parser.py b/src/tests/test_raw_parser.py similarity index 100% rename from auto_bangumi/tests/test_raw_parser.py rename to src/tests/test_raw_parser.py diff --git a/auto_bangumi/utils/__init__.py b/src/utils/__init__.py similarity index 100% rename from auto_bangumi/utils/__init__.py rename to src/utils/__init__.py diff --git a/auto_bangumi/utils/json_config.py b/src/utils/json_config.py similarity index 100% rename from auto_bangumi/utils/json_config.py rename to src/utils/json_config.py