我的目录结构如下所示:
dirA
fileA1
fileA2
...
dirB
fileB1
fileB2
...
我想使用 CLI 实用程序创建一个 torrent,其中包含:
dirA/fileA1
dirB/fileB1
(注意:这是一个简化的示例。实际上,每个目录有四个目录和数千个文件,我想从每个目录中选择约 100 个文件。因此涉及简单排除特定文件的解决方案将不起作用。 )
到目前为止我已经尝试过:
- 托伦特只允许您指定单个文件或目录
- 洪流只允许您指定单个文件或目录
- 传输-创建只允许您指定单个文件或目录
- py3torrentcreator只允许您指定单个文件或目录。它确实允许您指定要排除的文件模式,但有太多其他文件无法单独排除它们。
我还尝试使用 Python 绑定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
有什么办法可以做到这一点吗?
答案1
据我所知,最简单的方法是创建一个目录,其中包含指向要添加到 torrent 的不同文件或目录的符号链接。
将符号链接添加到父目录
cd ~/Shared/parent-dir/
ln -s /path/to/file
ln -s /path/to/dir
创建您的种子
使用 Transmission-create 进行测试,您可以使用此源文件夹创建一个新的 torrent,并且将遍历每个符号链接。
transmission-create ~/Shared/parent-dir/
对于不是父目录后代的文件,无法将完整文件路径存储在 torrent 的元信息中。当对等方下载多文件 torrent 时,会使用在其元信息中找到的 torrent 名称创建一个目录。该目录用作元信息中包含的所有文件的最顶层父目录。
这是我调用的 torrent 的元信息的输出bt-symlinks.torrent
。请注意,元信息中仅存储文件的路径,并且它们始终以名称(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)
答案2
您可以通过使用 torrenttools 将合适的正则表达式模式传递给 --include 选项来完成此操作。
torrenttools create --include ".*dirA/fileA1" ".*dirB/fileB1" dir
看:https://github.com/fbdtemme/torrenttools
免责声明:我是该工具的作者。