Tracker 替换
TAGS: PT 命令行替换 找到 fastresume 文件 执行替换 注意使用 GNU Sed(gsed),替换时注意 pattern 中的需要替换tracker的字符数量。 sed -i 's!15:http://test\.com!16:http://tjupt.org!g' *.fastresume 油猴脚本 https://greasyfork.org/zh-CN/scripts/391688-%E6%B0%B4%E6%B0%B4-qbittorrent-%E7%AE%A1%E7%90%86%E8%84%9A%E6%9C%AC Python 脚本 https://github.com/Stat1cV01D/bt_trackers_replacer/blob/master/tracker_replace.py import glob import os import re import sys trackers_section_exp = re.compile(b'trackersll(\d+:.*)ee\d+:') tracker_len_exp = re.compile(b'(el)?(\d+):') print('Simple tool to replace tracker info in *.fastresume files v0.1') if len(sys.argv) != 3: print('Usage: ' + sys.argv[0] + ' <old tracker> <new tracker> ') print('*.fastresume files must be in BT_backup folder beside the script') sys.exit(1) old_text = sys.argv[1].encode('utf-8') new_text = sys.argv[2].encode('utf-8') os.chdir('BT_backup') for file in glob.glob('*.fastresume'): with open(file, 'rb') as f: data = f.read() if old_text not in data: print('Skippping ' + file) continue print('Found item in ' + file) trackers_section = re.search(trackers_section_exp, data) if not trackers_section: continue trackers = trackers_section.group(1) tracker_list = [] i = 0 while i < len(trackers): len_found = re.search(tracker_len_exp, trackers[i:]) tracker_len = int(len_found.group(2)) i += len_found.end() tracker = trackers[i:i+tracker_len] if tracker.find(old_text) != -1: new_tracker = tracker.replace(old_text, new_text) print(' Replacing ' + tracker.decode('utf-8') + ' with ' + new_tracker.decode('utf-8')) tracker = new_tracker tracker_list.append(str(len(tracker)).encode('utf-8') + b':' + tracker) i += tracker_len data = data.replace(trackers, b'el'.join(tracker_list)) with open(file, 'wb') as f: f.write(data)