Original link
https://qbforums.shiki.hu/index.php?topic=4976.0
Code: Select all
import glob
import os
import re
qBt_savePath_exp = re.compile('qBt-savePath\d+')
save_path_exp = re.compile('save_path\d+')
path_length_exp = re.compile('qBt-savePath(\d+)')
print 'Simple tool to replace base path on torrents'
old_text = raw_input('Old String to search: ')
new_text = raw_input('String to insert in place of found string: ')
print 'Replacing ' + old_text + ' with ' + new_text
os.chdir('BT_backup')
for file in glob.glob('*.fastresume'):
with open(file, 'rb') as f:
data = f.read()
if old_text in data:
print 'Found Item'
qBt_pos_start = re.search(qBt_savePath_exp, data).start()
path_length = int(re.search(path_length_exp, data).group(1))
qBt_pos_stop = re.search(qBt_savePath_exp, data).end() + (path_length + 1)
qBt_path = data[qBt_pos_start:qBt_pos_stop]
path = qBt_path[(path_length * -1):]
front_string = data[:qBt_pos_start]
rear_string = data[qBt_pos_stop:]
path = path.replace(old_text, new_text)
new_path_length = len(path)
data = front_string + 'qBt-savePath' + str(new_path_length) + ':'
data += path
data += rear_string
sp_pos_start = re.search(save_path_exp, data).start()
sp_pos_stop = re.search(save_path_exp, data).end() + (path_length + 1)
front_string = data[:sp_pos_start]
rear_string[sp_pos_stop:]
data = front_string + 'save_path' + str(new_path_length) + ':'
data += path
data += rear_string
with open(file, 'wb') as f:
f.write(data)