我使用过几个点对点客户端,它们有一个选项可以防止用户重复下载文件,方法是轻轻地要求确认,或者拒绝添加新的下载,除非被迫。这非常有用,因为它提醒我检查文件系统,例如PlaneShift 安装程序然后再重新下载。
显然,这需要保留已下载的所有内容的历史记录,并在每次开始下载之前进行检查,以及一两个用户对话框。
我现在正在使用rtorrent
BitTorrent 协议,但我还没有找到一种方法来阻止我下载两次文件。rtorrent
对于仍在下载或播种的文件确实会这样做,但对于已从其视图中删除的任何文件则不会。
我考虑过跟踪.torrent
我下载了哪些文件,但事情变得更加复杂磁力链接以及.torrent
同一次下载的多个文件。
有没有办法rtorrent
跟踪实际的下载(例如其哈希值)并阻止我下载两次?或者,也许有一些外部工具可以帮我做到这一点?
答案1
您可以使用 rtorrent 的触发器和脚本功能。
我自己没有做过您要求的事情,但做过类似的事情。例如,我正在运行一个会话,其中包含以下条目rtorrent.rc
:
schedule =
watch_directory_1,10,10,
"load_start=/path/to/watch/folder/*.torrent,
d.set_custom1=$execute_capture={/path/to/external/script},
d.set_custom2=1"
system.method.set_key =
event.download.finished,
move_complete,
"d.set_directory=$d.get_custom1= ;
execute=mv,-u,
$d.get_base_path=,
$d.get_custom1= ;
execute=/path/to/another/external/script,
$d.get_name=,
$d.get_custom1=,
$d.get_custom2="
(为清晰起见添加了换行符)。
$d.get_custom1
这会将完成的下载移动到开始下载时设置的路径(忽略$d.get_custom2
- 用于不同的目的,但我将其作为示例)。
如您所见,外部脚本被执行,并且它们的返回值被 rtorrent 捕获。通过使用外部脚本来跟踪您已下载的内容(例如,将哈希或文件名写入日志文件/数据库以记录已完成的下载),并根据此列表(grep
或 DB 实用程序)检查新下载并据此采取行动,您可以实现您想要的目标。
rtorrent 脚本功能的完整概述过于全面 - 请参阅手册和在线资源。我并不是说它是不言而喻或简单的 - 当然不是 - 但它确实可能的:-) 。
答案2
看https://code.google.com/p/pyroscope/wiki/QueueManager#Configuration例如:
- 一些文件之内不会下载种子(通过将其优先级设置为 0),并且
- 一些种子是加载的程序不会自动启动(“带有大量图形的音频”用例)。
正如您所看到的,这些都是相当复杂的条件,只需添加自定义(Python)代码即可。