Этот репозиторий реализует пакеты, связанные с BitTorrent, и утилиты командной строки в Go. Акцент сделан на использовании в качестве библиотеки из других проектов. С конца 2014 года он использовался в производстве нижестоящими службами круглосуточно и без выходных. Реализация была специально создана для изучения возможностей параллелизма Go и включения возможности потоковой передачи данных непосредственно из сети BitTorrent. С этой целью он поддерживает поиск, упреждающее чтение и другие функции, предоставляющие доступ к торрентам и их файлам с помощью различных идиоматических интерфейсов пакетов Go io
. Это также демонстрируется через торрентфс.
Имеется поддержка шифрования протоколов DHT, PEX, uTP и различных расширений. Предусмотрено несколько механизмов хранения данных: blob, file,bolt, mmap и sqlite, и это лишь некоторые из них. Вы можете написать свой собственный для хранения данных например на S3 или в базе данных.
Некоторые заслуживающие внимания зависимости пакетов, которые можно использовать для других целей, включают:
Установите пакет библиотеки с помощью go get github.com/anacrolix/torrent
или предоставленные cmds с помощью go install github.com/anacrolix/torrent/cmd/...@latest
.
В документации пакета есть несколько небольших примеров.
Среди известных публичных проектов несколько веб-интерфейсов, сайтов, Android-клиентов, хранилищ и вспомогательных сервисов:
Общение о проекте осуществляется в основном посредством обсуждений и системы отслеживания проблем.
Здесь я опишу, что делают некоторые пакеты в ./cmd
. См. раздел «Установка», чтобы сделать их доступными.
torrent
torrent download
Скачивает торренты из командной строки.
$ 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
Создает магнитную ссылку из торрент-файла. Обратите внимание на извлеченные трекеры, отображаемое имя и хэш информации.
$ 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
См. torrent metainfo --help
для получения информации о других командах, связанных с метаинформацией.
torrentfs
torrentfs монтирует файловую систему FUSE по адресу -mountDir
. Содержимое — это торренты, описанные в торрент-файлах и магнитных ссылках в -metainfoDir
. Данные для запросов на чтение извлекаются из торрент-сети только по мере необходимости и сохраняются в -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 -