从 CLI 中使用来自不同目录的文件创建 torrent

从 CLI 中使用来自不同目录的文件创建 torrent

我的目录结构如下所示:

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

免责声明:我是该工具的作者。

相关内容