我想知道是否有可能,有一个激流集合(IE包含多个文件的激流)来提取单个文件,生成一个几乎新的激流/磁铁链接,只下载单个文件,但使用相同的来源(宣布等),而不是下载整个激流,然后选择下载或不下载。
2019更新:是的,你现在可以!2017年发布了一份BEP草案,涵盖了磁铁uri的问题行为!这很棒,因为它创建了一个标准,在指向多文件种子的磁铁URI和指向多文件种子中的单个文件的磁铁URI之间保持一致的info_hash。他们将共享一个群,这意味着你可以,正如问题所问的,"[生成]一个几乎新的torrent/magnet链接,只下载单个文件,但使用相同的来源"。
BEP草案:http://www.bittorrent.org/beps/bep_0053.html BEP 53: "磁体URI扩展-为下载选择特定的文件索引"
请求文件0、2、4以及包括6到8的范围的URI示例:
magnet:?xt=urn:btih:HASH&dn=NAME&tr=TRACKER&so=0,2,4,6-8
并且BEP草案正在进入bittorrent库:
- https://gitlab.com/proninyaroslav/libretorrent/tags/1.9 LibreTorrent 1.9 2018-11-26
- https://github.com/webtorrent/webtorrent/issues/1395 Webtorrent 0.100.0 2018-MAY-23
2013年5月03日有时会,但不经常,结果是没有同伴。
首先,您需要原始的。torrent文件,因此,如果您只有一个磁力URI,则需要使用DHT将其解析为。torrent。任何支持磁力uri的bittorrent库都有该任务的代码。
一旦你有了。torrent,你就需要得到与你感兴趣的文件相关的哈希值。.torrent文件包含一个很长的字符串,每20个字节表示torrent文件中每一部分的哈希值。torrent的片段长度是固定的,通常在256KB到1MB之间。如果文件正好从一块偏移开始,并且大小等于块大小的倍数,或者是洪流中的最后一个文件,那么您可以重用这些哈希值。然后,您可以使用该信息创建一个新的.torrent文件,并从torrent文件生成一个新的磁体URI,重用公告或使用一个新的。
种子信息结构:https://wiki.theory.org/BitTorrentSpecification#Metainfo_File_Structure
幸运地得到偏移量是不太可能的,块长度通常在256KB &在1MB的情况下,获得偏移量的概率是1/262144到1/268435456(考虑到文件可以从一个片段的任何位置开始),所以这种情况不太可能发生。如果你不能重复使用哈希,你需要生成新的哈希,这意味着你不能重复使用。torrent文件,需要下载文件来生成新的哈希。
的杀手是,在最后,洪流创建有一个不同的info_hash。info_hash是描述种子的信息的哈希,它是许多文件的描述,现在在你的新哈希中是单个文件的描述,因此是一个新的种子,所以没有人可以从中吸取。节点根据info_hash聚集成集群,如果你基于多文件种子中的一个文件创建了一个新的种子,来自多文件种子的节点不知道它,也无法从中获取信息。
即使你很幸运地得到了正确的片段偏移量,你创建了一个没有任何人共享文件的种子。
所以,你可以重新使用磁铁URI,只是指定一个文件名在种子?不,描述Bittorrent如何使用磁铁uri的BEP并没有涵盖这种行为。http://www.bittorrent.org/beps/bep_0009.html