Command-Line
從 CLI 使用來自不同目錄的文件創建 torrent
我有一個看起來像這樣的目錄結構:
dirA fileA1 fileA2 ... dirB fileB1 fileB2 ...
我想使用 CLI 實用程序創建一個 torrent,其中包含:
dirA/fileA1 dirB/fileB1
(注意:這是一個簡化的例子。實際上,有四個目錄和數千個文件,我想從每個目錄中選擇〜100個文件。所以簡單地排除特定文件的解決方案是行不通的。 )
到目前為止,我已經嘗試過:
- ctorrent僅允許您指定單個文件或目錄
- mktorrent只允許您指定單個文件或目錄
- transmission-create僅允許您指定單個文件或目錄
- 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
有沒有辦法做到這一點?
據我所知,最簡單的方法是創建一個目錄,其中包含指向要添加到 torrent 的不同文件或目錄的符號連結。
將符號連結添加到父目錄
cd ~/Shared/parent-dir/
ln -s /path/to/file
ln -s /path/to/dir
創建你的 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)