- TAGS: PT
命令行替换
找到 fastresume
文件
执行替换
注意使用 GNU Sed(gsed),替换时注意 pattern
中的需要替换tracker的字符数量。
sed -i 's!15:http://test\.com!16:http://tjupt.org!g' *.fastresume
油猴脚本
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)