因栽培者大佬webui的用户标签是存在浏览器的,webui年代久远,响应很慢,
过节找我的上家聊了一下,在药丸看到了个国人汉化的webui,响应很快
预览见此贴
关于tr如何安装、更换webui再次不在赘述,
记录分享一下更换webui后如何把用户标签导入到tr内
理论上适用于所有显示tr自带标签的webui
楼主transmission环境为群晖docker,镜像名称为linuxserver/transmission:4.0.3
py脚本运行环境为Windows10 LTSC python3.9.6
免责声明:
所有操作之前请对数据备份,楼主不对资料损坏负任何责任
1、预处理旧webui导出的用户标签配置文件:
新建文件夹,导出栽培者大佬webui内置的用户标签,保存文件名为tr-web-control-labels.json(如有不同需在py代码内修改),将以下python脚本保存在相同文件夹下,后缀为.py,执行脚本
这个步骤是将栽培者大佬webui文件中,提前预声明的用户标签内容替换至对应种子hash中去,导出完成以后就可以替换新的webui了。
如果提示缺少模块按照错误提示安装模块,如果提示编码错误请注意py文件编码格式,楼主文件默认编码为utf8,下同
import json
def modify_json(input_file, output_file):
with open(input_file, 'rb') as f:
data = json.loads(f.read().decode('utf-8'))
labels_map = {label['index']: label['name'] for label in data['labels']}
for key in data['maps'].keys():
in(๐•ᴗ•๐)es = data['maps'][key]
mapped_names = [labels_map[index] for index in in(๐•ᴗ•๐)es if index in labels_map]
data['maps'][key] = mapped_names
with open(output_file, 'w', encoding='utf-8') as f:
json.dump(data, f, indent=4, ensure_ascii=False)
modify_json('tr-web-control-labels.json', 'output.json')
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
保留输出文件output.json
2、新建另外一个txt文本文件,将以下内容复制进去,另存为py格式,建议文件编码为utf8
import json
from transmission_rpc import Client
# 配置文件(๐•ᴗ•๐)径
config_file_path = 'config.json'
# 读取JSON配置文件
with open(config_file_path, 'r', encoding='utf-8') as config_file:
config_data = json.load(config_file)
# 提取连接信息
rpc_url = config_data["rpc_url"]
rpc_username = config_data["rpc_username"]
rpc_password = config_data["rpc_password"]
torrent_hashes = config_data["torrent_hashes"]
# 从rpc_url中解析出host和port
rpc_host = rpc_url.split("//")[1].split(":")[0]
rpc_port = 9091 # 请根据实际情况替换端口号
# 创建Transmission RPC客户端
client = Client(host=rpc_host, port=rpc_port, username=rpc_username, password=rpc_password)
# 定义一个函数来更新单个种子的标签
def update_torrent_tags(torrent_hash, tags):
try:
# 使用change_torrent方法更新标签
client.change_torrent(ids=torrent_hash, labels=tags)
print(f"更新标签成功: {torrent_hash}")
except Exception as e:
print(f"更新标签出错: {torrent_hash}, 错误信息: {e}")
# 遍历种子哈希和对应的新标签列表,更新标签
for torrent_hash, tags in torrent_hashes.items():
update_torrent_tags(torrent_hash, tags)
print("所有种子的标签更新完成。")
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
3、新建txt文本文档,用于书写tr配置与写入用户标签信息,建议文件编码为utf8,填入内容后保存为config.json,需要与序号2中的py文件保持相同目录
{
"rpc_url": "http://127.0.0.1:9091/transmission/rpc",
"rpc_username": "user",
"rpc_password": "passwd",
"torrent_hashes": {}
}
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
4、打开步骤2中的output.json文件,复制maps:后面的大括号,一直到文本结束大括号前,示例如下
起始:
结束:
(我的json格式化了,不操作这个步骤不影响结果,仅是方便查看)
删除步骤三中"torrent_hashes":
后面的两个大括号,将复制的文本内容粘贴至这里,保存
5、运行步骤2保存的py文件,如果提示缺少模块请根据提示安装,如果未报错的话,会被“更新标签成功:xxxxxxxx”刷屏,稍等一会就能出现更新完成的提示,这时候去新webui查看更新后的标签就可以了。