Bre*_*itt 7 command-line bittorrent
我有一个目录结构,看起来像:
dirA
fileA1
fileA2
...
dirB
fileB1
fileB2
...
Run Code Online (Sandbox Code Playgroud)
我想使用包含以下内容的 CLI 实用程序创建一个 torrent:
dirA/fileA1
dirB/fileB1
Run Code Online (Sandbox Code Playgroud)
(注意:这是一个简化的例子。实际上,每个目录有四个目录和数千个文件,我想从每个目录中选择大约 100 个文件。因此,仅涉及排除特定文件的解决方案将不起作用。 )
到目前为止,我已经尝试过:
我也尝试使用 Python 绑定 for libtorrent
,但它们的 add_files 方法去掉了目录名称:
>>> import libtorrent as lt
>>> fs = lt.file_storage()
>>> lt.add_files(fs, 'dirA/fileA1')
>>> lt.add_files(fs, 'dirB/fileB1')
>>> print fs.at(0).path
fileA1
>>> t = lt.create_torrent(fs)
>>> lt.set_piece_hashes(t, '.')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError: No such file or directory
Run Code Online (Sandbox Code Playgroud)
有什么办法可以做到这一点吗?
据我所知,最简单的方法是创建一个目录,其中包含指向要添加到 torrent 的不同文件或目录的符号链接。
将符号链接添加到父目录
cd ~/Shared/parent-dir/
ln -s /path/to/file
ln -s /path/to/dir
使用transmission-create创建您的torrent测试,您可以使用此源文件夹创建一个新的torrent,并且将遍历每个符号链接。
transmission-create ~/Shared/parent-dir/
对于不是 parent-dir 后代的文件,无法将完整的文件路径存储在 torrent 的元信息中。当对等点下载多文件 torrent 时,将使用在其元信息中找到的 torrent 名称创建一个目录。此目录用作元信息中包含的所有文件的最顶层目录。
这是我调用的 torrent 的元信息输出bt-symlinks.torrent
。注意文件的路径是如何存储在元信息中的,并且它们总是以 name(infile) 1开头,用作它们的最顶层2目录3。
transmission-show bt-symlinks.torrent
Name: bt-symlinks
File: .torrent
GENERAL
Name: bt-symlinks
Hash: 35af9b734284f9259763defe6095424fe3b79b42
Created by: Transmission/2.82 (14160)
Created on: Sat Dec 27 12:04:59 2014
Piece Count: 2357
Piece Size: 64.00 KiB
Total Size: 154.4 MB
Privacy: Public torrent
TRACKERS
FILES
bt-symlinks/bt-symlinks.torrent (57.40 kB)
bt-symlinks/gifs/Bill-Cosby-Jell-o-GIF.gif (810.3 kB)
bt-symlinks/gifs/Firefly_Lantern_Animation_by_ProdigyBombay.gif (485.2 kB)
bt-symlinks/gifs/L-cake.gif (455.2 kB)
bt-symlinks/gifs/L-sweets.gif (871.0 kB)
bt-symlinks/gifs/Metroid (NES) Music - Kraids Hideout.mp4 (4.16 MB)
bt-symlinks/gifs/Phantasy Star II_Mother Brain.gif (530.5 kB)
Run Code Online (Sandbox Code Playgroud)