Este repositório implementa pacotes relacionados ao BitTorrent e utilitários de linha de comando em Go. A ênfase está no uso como biblioteca de outros projetos. Ele tem sido usado 24 horas por dia, 7 dias por semana na produção por serviços downstream desde o final de 2014. A implementação foi criada especificamente para explorar os recursos de simultaneidade do Go e incluir a capacidade de transmitir dados diretamente da rede BitTorrent. Para este fim, ele suporta busca, readaheads e outros recursos que expõem torrents e seus arquivos com as várias interfaces de pacotes io
Go. Isso também é demonstrado através do torrentfs.
Há suporte para criptografia de protocolo, DHT, PEX, uTP e várias extensões. Existem vários backends de armazenamento de dados fornecidos: blob, file, bolt, mmap e sqlite, para citar alguns. Você pode escrever seus próprios dados para armazenar dados, por exemplo, no S3 ou em um banco de dados.
Algumas dependências de pacotes dignas de nota que podem ser usadas para outros fins incluem:
Instale o pacote da biblioteca com go get github.com/anacrolix/torrent
ou os cmds fornecidos com go install github.com/anacrolix/torrent/cmd/...@latest
.
Existem alguns pequenos exemplos na documentação do pacote.
Existem vários frontends web, sites, clientes Android, backends de armazenamento e serviços de suporte entre os projetos públicos conhecidos:
A comunicação sobre o projeto é feita principalmente por meio de discussões e do rastreador de problemas.
Aqui descreverei o que alguns dos pacotes em ./cmd
fazem. Consulte instalação para disponibilizá-los.
torrent
torrent download
Baixa torrents da linha de comando.
$ torrent download 'magnet:?xt=urn:btih:KRWPCX3SJUM4IMM4YF5RPHL6ANPYTQPU'
... lots of jibber jabber ...
downloading "ubuntu-14.04.2-desktop-amd64.iso": 1.0 GB/1.0 GB, 1989/1992 pieces completed (1 partial)
2015/04/01 02:08:20 main.go:137: downloaded ALL the torrents
$ md5sum ubuntu-14.04.2-desktop-amd64.iso
1b305d585b1918f297164add46784116 ubuntu-14.04.2-desktop-amd64.iso
$ echo such amaze
wow
torrent metainfo magnet
Cria um link magnético a partir de um arquivo torrent. Observe os rastreadores extraídos, o nome de exibição e o hash de informações.
$ torrent metainfo testdata/debian-10.8.0-amd64-netinst.iso.torrent magnet
magnet:?xt=urn:btih:4090c3c2a394a49974dfbbf2ce7ad0db3cdeddd7&dn=debian-10.8.0-amd64-netinst.iso&tr=http%3A%2F%2Fbttracker.debian.org%3A6969%2Fannounce
Veja torrent metainfo --help
para outros comandos relacionados a metainfo.
torrentfs
torrentfs monta um sistema de arquivos FUSE em -mountDir
. O conteúdo são os torrents descritos pelos arquivos torrent e links magnéticos em -metainfoDir
. Os dados para solicitações de leitura são obtidos apenas conforme necessário na rede torrent e armazenados em -downloadDir
.
$ mkdir mnt torrents
$ torrentfs -mountDir=mnt -metainfoDir=torrents &
$ cd torrents
$ wget http://releases.ubuntu.com/14.04.2/ubuntu-14.04.2-desktop-amd64.iso.torrent
$ cd ..
$ ls mnt
ubuntu-14.04.2-desktop-amd64.iso
$ pv mnt/ubuntu-14.04.2-desktop-amd64.iso | md5sum
996MB 0:04:40 [3.55MB/s] [========================================>] 100%
1b305d585b1918f297164add46784116 -