我想知道是否有可能,有一个torrent集合(即包含多个文件的torrent )来提取单个文件,生成几乎新的torrent/magnet链接来仅下载单个文件,但使用相同的源(公告等),而不是下载整个torrent,然后选择下载或不下载什么。
谢谢你给我的任何提示。
发布于 2013-05-03 09:08:10
2019更新:是的,您现在可以!2017年发布了一份BEP草案,涵盖了磁石URI的问题行为!这很棒,因为它创建了一个标准,可以在指向多文件洪流的磁铁URI和指向多文件洪流中的单个文件的磁铁URI之间保持一致的info_hash。它们将共享一个群,这意味着你可以,正如问题所问的那样,“生成一个几乎新的torrent/magnet链接,只下载单个文件,但使用相同的源”。
草案BEP:http://www.bittorrent.org/beps/bep_0053.html BEP 53:"Magnet URI扩展-选择要下载的特定文件索引“
请求文件0、2、4以及从6到8的范围的示例URI:
magnet:?xt=urn:btih:HASH&dn=NAME&tr=TRACKER&so=0,2,4,6-8BEP草案正在进入bittorrent库:
2013-5-03原始答案:有时是,但不经常,结果群没有同行。
首先,您需要原始的.torrent文件,因此如果您只有一个磁体URI,则需要使用分布式哈希表将其解析为.torrent。任何支持magnet的bittorrent库都有该任务的代码。
有了.torrent之后,您需要获取与您感兴趣的文件相关的散列。.torrent文件包含一个非常长的字符串,每个字符串20个字节代表torrent中每个片段的散列。块长度对于torrent是固定的,通常在256KB和1MB之间。如果文件从片段偏移量开始,并且大小等于片段大小的倍数,或者是torrent中的最后一个文件,则可以重用这些散列。然后,您可以使用该信息创建一个新的.torrent文件,并从torrent文件生成一个新的磁铁URI,重用公告或使用新的URI。
Torrent信息结构:https://wiki.theory.org/BitTorrentSpecification#Metainfo_File_Structure
幸运地获得该偏移量是不太可能的,因为片段长度通常在256KB和1MB之间变化,您有1/262144到1/268435456的机会获得该偏移量(假设文件可以从片段中的任何地方开始),因此这种情况不太可能。如果不能重用散列,就需要生成新的散列,这意味着不能重用.torrent,需要下载文件来生成新的散列。
杀手级的是,最终创建的torrent具有不同的info_hash。info_hash是描述torrent的信息的散列,这是对许多文件的描述,现在在您的新散列中是对单个文件的描述,因此是一个新的torrent,所以没有人可以从中提取。基于info_hash的对等点聚集成群,如果您根据多文件torrent中的一个文件创建新的torrent,则来自多文件torrent的对等点不知道这一点,也无法从中提取。
即使您足够幸运地获得了正确的部分偏移量,您也会创建一个没有任何人共享该文件的torrent。
那么,您是否可以重用磁铁URI并在torrent中指定一个文件名呢?不,描述Bittorrent如何使用磁铁URI的BEP没有涵盖这一行为。http://www.bittorrent.org/beps/bep_0009.html
https://stackoverflow.com/questions/16333165
复制相似问题