Cria torrent com arquivos de diretórios diferentes da CLI

7

Eu tenho uma estrutura de diretórios que se parece com:

dirA
   fileA1
   fileA2
   ...
dirB
   fileB1
   fileB2
   ...

Eu gostaria de criar um torrent usando os utilitários CLI que contém:

dirA/fileA1
dirB/fileB1

(Nota: este é um exemplo simplificado. Na verdade, existem quatro diretórios e milhares de arquivos em cada um, e eu gostaria de selecionar ~ 100 arquivos de cada diretório. Então soluções que envolvem simplesmente excluir arquivos específicos vencidos ' t trabalho.)

Até agora eu tentei:

  • ctorrent só permite especificar um único arquivo ou diretório
  • mktorrent só permite especificar um único arquivo ou diretório
  • transmission-create só permite especificar um único arquivo ou diretório
  • O py3torrentcreator só permite especificar um único arquivo ou diretório. Ele permite que você especifique um padrão de arquivos a serem excluídos, mas existem muitos outros arquivos para excluí-los individualmente.

Eu também tentei usar as ligações Python para libtorrent , mas o método add_files remove os nomes dos diretórios:

>>> 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

Existe alguma maneira de conseguir isso?

    
por Brendan Dolan-Gavitt 23.12.2014 / 19:26

1 resposta

5

A maneira mais fácil de fazer isso, que eu saiba, é criar um único diretório contendo links simbólicos para os diferentes arquivos ou diretórios que você gostaria de adicionar ao torrent.

Adicione links simbólicos a um diretório pai
cd ~/Shared/parent-dir/ e ln -s /path/to/file e ln -s /path/to/dir

Crie seu torrent
Testando com transmission-create, você pode criar um novo torrent usando esta pasta de origem e cada link simbólico será percorrido.

transmission-create ~/Shared/parent-dir/

Não há como armazenar o caminho de arquivo completo em uma meta-informação de torrent para arquivos que não são descendentes de parent-dir. Quando um par faz o download do torrent de vários arquivos, um diretório é criado usando o nome do torrent encontrado em suas meta-informações. Esse diretório é usado como o diretório mais principal de todos os arquivos incluídos na meta-informação.

Aqui está a saída da meta informação para um torrent que chamei de bt-symlinks.torrent . Observe como somente os caminhos para os arquivos são armazenados na meta informação e eles sempre começam com o nome (infile) 1 usado como o principal diretório 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)
    
por 27.12.2014 / 19:55