私のディレクトリ構造は次のとおりです。
dirA
fileA1
fileA2
...
dirB
fileB1
fileB2
...
CLIユーティリティを使用して、次のものを含む急流を作成したいと思います。
dirA/fileA1
dirB/fileB1
(注:これは単純化された例です。実際には、各ディレクトリには4つのディレクトリと数千のファイルがあり、各ディレクトリから約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
私が知っている限り、最も簡単な方法は、急流に追加したいさまざまなファイルまたはディレクトリへのシンボリックリンクを含むディレクトリを作成することです。
親ディレクトリにシンボリックリンクを追加する
cd ~/Shared/parent-dir/
ln -s /path/to/file
ln -s /path/to/dir
あなたの種を作る
Transmission-createを使用してテストすると、このソースフォルダに新しい急流を作成でき、すべてのシンボリックリンクが通過します。
transmission-create ~/Shared/parent-dir/
親ディレクトリの子孫以外のファイルへのフルファイルパスは、急流のメタ情報に保存できません。ピアが複数ファイルの急流をダウンロードすると、メタ情報の急流名を使用してディレクトリが作成されます。このディレクトリは、メタ情報に含まれるすべてのファイルの最上位の親ディレクトリとして機能します。
私が呼び出した急流のメタ情報の出力ですbt-symlinks.torrent
。ファイルパスのみがメタ情報に保存され、常に名前(infile)で始まります。1彼らのトップレベルで使用2目次サム。
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
免責事項:私はこのツールの作成者です。