diff --git a/.idea/Bangumi_Auto_Rename.iml b/.idea/Bangumi_Auto_Rename.iml index 8437fe66..d870a4a7 100644 --- a/.idea/Bangumi_Auto_Rename.iml +++ b/.idea/Bangumi_Auto_Rename.iml @@ -2,7 +2,7 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index dc9ea490..ab530bfd 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..94a25f7f --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/rename_qb.py b/rename_qb.py index b5482ff4..05389f31 100644 --- a/rename_qb.py +++ b/rename_qb.py @@ -28,10 +28,11 @@ sys.stdout = io.TextIOWrapper(buffer=sys.stdout.buffer, encoding='utf8') parser = argparse.ArgumentParser(description='Regular Expression Match') parser.add_argument('--hash', default='', help='The torrent Hash value.') +args = parser.parse_args() -class Qbtorrent_Rename: - def __init__(self, method): +class QbittorrentRename: + def __init__(self, rename_method): self.qbt_client = qbittorrentapi.Client(host=host_ip, username=user_name, password=password) try: self.qbt_client.auth_log_in() @@ -44,70 +45,59 @@ class Qbtorrent_Rename: self.count = 0 self.rename_count = 0 self.torrent_count = len(self.recent_info) - self.method = method + self.method = rename_method - def rename(self, idx): + def rename_normal(self, idx): self.name = self.recent_info[idx].name - if self.method == "pn": - n = re.split(r'\[|\]', self.name) - file_name = self.name.replace(f'[{n[1]}]', '') - else: - file_name = self.name + file_name = self.name for rule in episode_rules: matchObj = re.match(rule, file_name, re.I) if matchObj is not None: - if self.method == 'normal': - self.new_name = f'{matchObj.group(1)} E{matchObj.group(2)} {matchObj.group(3)}' - elif self.method == 'pn': - new_name = f'{matchObj.group(1)} E{matchObj.group(2)}.mp4' - new_name = new_name.replace('[', '') - self.new_name = new_name.replace(']', '') + self.new_name = f'{matchObj.group(1)} E{matchObj.group(2)} {matchObj.group(3)}' - def qb_rename(self, idx, torrent_hash=''): - self.rename(idx) - if torrent_hash == '': - self.hash = self.recent_info[idx].hash - else: - self.hash = torrent_hash + def rename_pn(self, idx): + self.name = self.recent_info[idx].name + n = re.split(r'\[|\]', self.name) + file_name = self.name.replace(f'[{n[1]}]', '') + for rule in episode_rules: + matchObj = re.match(rule, file_name, re.I) + if matchObj is not None: + self.new_name = re.sub(r'\[|\]', '', f'{matchObj.group(1)} E{matchObj.group(2)}.{n[-1]}') + + def rename_hash(self, torrent_hash): + self.hash = torrent_hash try: self.qbt_client.torrents_rename_file(torrent_hash=self.hash, old_path=self.name, new_path=self.new_name) self.count += 1 print(f'{self.name} >> {self.new_name}') except: return - self.new_name = None + + def rename_app(self): + if self.method not in ['pn', 'normal', 'hash']: + print('error method') + elif self.method == 'normal': + for i in range(0, self.torrent_count + 1): + try: + self.rename_normal(i) + except: + print(f"-----已完成对{i + 1}个文件的检查,已对其中{self.count}个文件进行重命名-----") + print("------------------------完成------------------------") + quit() + elif self.method == 'pn': + for i in range(0, self.torrent_count + 1): + try: + self.rename_pn(i) + except: + print(f"-----已完成对{i + 1}个文件的检查,已对其中{self.count}个文件进行重命名-----") + print("------------------------完成------------------------") + quit() + elif self.method == 'hash': + self.rename_hash(args.hash) -def app(): - args = parser.parse_args() - if method not in ['hash', 'pn', 'normal']: - print("Not a correct method") - quit() - qb = Qbtorrent_Rename(method=method) - if method == 'hash': - torrent_hash = args.hash - try: - qb.qb_rename(0, torrent_hash) - except: - print('error') - quit() - elif method == 'pn': - for i in range(0, qb.torrent_count + 1): - try: - qb.qb_rename(i) - except: - print(f"-----已完成对{i + 1}个文件的检查,已对其中{qb.count}个文件进行重命名-----") - print("------------------------完成------------------------") - quit() - else: - for i in range(0, qb.torrent_count + 1): - try: - qb.qb_rename(i) - except: - print(f"-----已完成对{i + 1}个文件的检查,已对其中{qb.count}个文件进行重命名-----") - print("------------------------完成------------------------") - quit() if __name__ == "__main__": - app() + rename = QbittorrentRename(method) + rename.rename_app()