Erstellen Sie einen Torrent mit Dateien aus verschiedenen Verzeichnissen über die CLI

7

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?

Brendan Dolan-Gavitt
quelle
Ich bin mir nicht sicher, ob dies direkt möglich ist, aber eine temporäre Verzeichnisstruktur mit den ausgewählten Dateien, die mit den entsprechenden Stellen verknüpft sind, eignet sich gut für ctorrent.
Frostschutz

Antworten:

6

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

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)
Iyrin
quelle
Es sieht so aus, als wäre dies das Beste, was mit aktuellen Tools möglich ist. Es wäre schön, wenn Torrent-Ersteller einem erlauben würden, den Torrent-Namen von der Liste der Pfade zu trennen, aber ich denke, das wird auf meiner unendlichen TODO-Liste stehen. Danke für den Symlink-Trick - es funktioniert gut!
Brendan Dolan-Gavitt
Ja, wenn eine solche Funktionalität einem Client zum Herunterladen hinzugefügt würde, könnte der Torrent diese Dateien nicht mehr behalten. Möglicherweise kann der Client Ihnen erlauben, Dateien / Verzeichnisse an verschiedene Pfade zu senden und dann Symlinks zu erstellen, damit der Torrent sie weiterhin verfolgen / freigeben kann. Suchen Sie auch in den "Bittorrent-Protokollspezifikationen" nach detaillierteren Ressourcen, wenn Sie möchten.
Iyrin