Ich habe eine Verzeichnisstruktur, die aussieht wie:
dirA
fileA1
fileA2
...
dirB
fileB1
fileB2
...
Ich möchte einen Torrent mit CLI-Dienstprogrammen erstellen, der Folgendes enthält:
dirA/fileA1
dirB/fileB1
(Hinweis: Dies ist ein vereinfachtes Beispiel. In Wirklichkeit gibt es jeweils vier Verzeichnisse und Tausende von Dateien, und ich möchte ~ 100 Dateien aus jedem Verzeichnis auswählen. Daher funktionieren Lösungen, bei denen bestimmte Dateien einfach ausgeschlossen werden, nicht. )
Bisher habe ich versucht:
- Mit ctorrent können Sie nur eine einzelne Datei oder ein einzelnes Verzeichnis angeben
- Mit mktorrent können Sie nur eine einzelne Datei oder ein einzelnes Verzeichnis angeben
- Mit Transmission-Create können Sie nur eine einzelne Datei oder ein einzelnes Verzeichnis angeben
- Mit py3torrentcreator können Sie nur eine einzelne Datei oder ein einzelnes Verzeichnis angeben. Sie können zwar ein Muster von Dateien angeben, die ausgeschlossen werden sollen, aber es gibt viel zu viele andere Dateien, um sie einzeln auszuschließen.
Ich habe auch versucht, die Python-Bindungen für zu verwenden libtorrent
, aber ihre Methode add_files entfernt die Verzeichnisnamen:
>>> 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
Gibt es eine Möglichkeit, dies zu erreichen?
command-line
bittorrent
Brendan Dolan-Gavitt
quelle
quelle
ctorrent
.Antworten:
Der bekannteste Weg, dies zu tun, besteht darin, ein einzelnes Verzeichnis zu erstellen, das Symlinks zu den verschiedenen Dateien oder Verzeichnissen enthält, die Sie dem Torrent hinzufügen möchten.
Fügen Sie einem übergeordneten Verzeichnis Symlinks hinzu
cd ~/Shared/parent-dir/
ln -s /path/to/file
ln -s /path/to/dir
Erstellen Sie Ihren Torrent
Wenn Sie mit Transmission- Create testen , können Sie mit diesem Quellordner einen neuen Torrent erstellen, und jeder Symlink wird durchlaufen.
transmission-create ~/Shared/parent-dir/
Es gibt keine Möglichkeit, den vollständigen Dateipfad in den Metainformationen eines Torrents für Dateien zu speichern, die keine Nachkommen des übergeordneten Verzeichnisses sind. Wenn ein Peer den Torrent mit mehreren Dateien herunterlädt, wird ein Verzeichnis mit dem Namen des Torrents erstellt, der in seinen Metainformationen enthalten ist. Dieses Verzeichnis wird als oberstes übergeordnetes Verzeichnis für alle in den Metainformationen enthaltenen Dateien verwendet.
Hier ist die Ausgabe der Meta-Informationen für einen Torrent, den ich aufgerufen habe
bt-symlinks.torrent
. Beachten Sie, dass nur Pfade zu Dateien in den Metainformationen gespeichert sind und immer mit dem Namen (infile) 1 beginnen, der als oberstes 2 Verzeichnis 3 verwendet wird .transmission-show bt-symlinks.torrent
quelle