rtorrent是一款非常流行的种子下载应用程序,它通常与其网页界面 rutorrent 一起使用。
然而,rtorrent/rutorrent 已经相当老旧了。正如PulsedMedia 的一位员工告诉我的那样,“rTorrent 在过去大约 8 年里基本上已经沦为弃用软件了。它现在还能勉强维持,只是靠着一些惯性罢了。”
rutorrent 的一个缺点是,如果你的种子服务器繁忙(有时即使不繁忙也会出现这种情况),你向 rutorrent 发出删除种子的命令,但 rtorrent(实际管理种子的引擎)却无法成功删除。对于大型种子,清理工作涉及成百上千个文件,这种情况尤其容易发生。几乎可以肯定的是,这些操作都会失败。
在这种情况下,随着时间的推移,文件会不断累积,最终可能导致数 GB 甚至数 TB 的无效空间。
有些工具可以帮到你。其中一个是autotorrent2 ,它可以列出未做种的文件供你清理。但是,它需要通过套接字端口访问 rtorrent,而PulsedMedia不支持这种方式,因为他们使用的是套接字文件。
我写了一个简单的脚本来列出未做种的种子,虽然并不完美,但能完成任务。它没有调用 rtorrent API,而是检查 rtorrent 会话目录。
嘿!咱们先休息一下,聊聊PulsedMedia吧!这篇文章并非PulsedMedia赞助,他们也没有对我的文章进行评测,甚至没有要求我做推广。我只是一个使用PulsedMedia服务多年的忠实用户。虽然很多VPS/独立服务器都能下载种子,但我更喜欢使用专门的种子服务器,因为他们能够应对高I/O和高网络负载。PulsedMedia的服务一直都很棒。最低只需每月3.99欧元即可开始使用。而且他们经常在ZHUJIMAO.COM上推出特价优惠。
好了,回到你的种子盒。
在会话目录中,每个活跃做种的文件都有一个对应的 .torrent 文件。rtorrent 在清理这些文件方面做得更好,因为它只需要一个系统调用即可删除,无需遍历目录树。在添加和删除了数百个种子后,我的 rtorrent 数据与 rutorrent 的数据完全同步。我们可以查看此目录以获取正在做种的文件列表,然后查看数据目录中的内容并进行比较。
我说它并不完美,因为它比较的是每个来源的路径,而两个种子文件可能具有相同的路径。
我们将利用torrent-parser来实际读取 .torrent 文件。
设置步骤如下:创建虚拟环境:
python3 -m venv torrent-parser cd ~/torrent-parser ./pip 安装 torrent_parser
以下是脚本。显然,请根据您的帐户调整顶部 shebang (#!) 行和目录位置。稍作修改,此脚本应该适用于任何提供商的任何 rtorrent 设置:
#!/home/raindog308/torrent-parser/bin/python 导入操作系统,重新 导入 torrent_parser as tp torrent_dir = "/home/raindog308/session" data_dir = "/home/raindog308/data" 数据条目 = {} for data_entry in os.listdir(data_dir): data_entries[data_entry] = True for torrent_file in os.listdir(torrent_dir): 如果 re.search('\.torrent$',torrent_file): full_file = "{}/{}".format(torrent_dir,torrent_file) data = tp.parse_torrent_file(full_file) 名称 = data['info']['name'] 尝试: 删除 data_entries[name] 除了: print("可能重复的种子路径:{}".format(name)) for data_entry in sorted(data_entries.keys()): 打印(数据条目)
真正的Python 高手或许可以用更简洁的语法重写这段代码,但它确实有效!