Dieses Repository implementiert BitTorrent-bezogene Pakete und Befehlszeilen-Dienstprogramme in Go. Der Schwerpunkt liegt auf der Nutzung als Bibliothek aus anderen Projekten. Es wird seit Ende 2014 rund um die Uhr in der Produktion von nachgelagerten Diensten verwendet. Die Implementierung wurde speziell entwickelt, um die Parallelitätsfähigkeiten von Go zu erkunden und die Möglichkeit zu bieten, Daten direkt aus dem BitTorrent-Netzwerk zu streamen. Zu diesem Zweck unterstützt es Such-, Readahead- und andere Funktionen zum Offenlegen von Torrents und ihren Dateien mit den verschiedenen Go idiomatic io
Paketschnittstellen. Dies wird auch durch torrentfs demonstriert.
Es werden Protokollverschlüsselung, DHT, PEX, uTP und verschiedene Erweiterungen unterstützt. Es stehen mehrere Datenspeicher-Backends zur Verfügung: Blob, File, Bolt, MMAP und SQLite, um nur einige zu nennen. Sie können Ihre eigenen schreiben, um Daten beispielsweise auf S3 oder in einer Datenbank zu speichern.
Zu den bemerkenswerten Paketabhängigkeiten, die für andere Zwecke genutzt werden können, gehören:
Installieren Sie das Bibliothekspaket mit go get github.com/anacrolix/torrent
oder die bereitgestellten cmds mit go install github.com/anacrolix/torrent/cmd/...@latest
.
In der Paketdokumentation finden Sie einige kleine Beispiele.
Zu den bekannten öffentlichen Projekten gehören mehrere Web-Frontends, Websites, Android-Clients, Speicher-Backends und unterstützende Dienste:
Die Kommunikation über das Projekt erfolgt hauptsächlich über Diskussionen und den Issue-Tracker.
Hier beschreibe ich, was einige der Pakete in ./cmd
bewirken. Siehe Installation, um sie verfügbar zu machen.
torrent
torrent download
Lädt Torrents über die Befehlszeile herunter.
$ 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
Erstellt einen Magnet-Link aus einer Torrent-Datei. Notieren Sie sich die extrahierten Tracker, den Anzeigenamen und den Info-Hash.
$ 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
Weitere Metainfo-bezogene Befehle finden Sie torrent metainfo --help
.
torrentfs
torrentfs mountet ein FUSE-Dateisystem unter -mountDir
. Der Inhalt sind die Torrents, die durch die Torrent-Dateien und Magnet-Links unter -metainfoDir
beschrieben werden. Daten für Leseanfragen werden nur bei Bedarf vom Torrent-Netzwerk abgerufen und unter -downloadDir
gespeichert.
$ 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 -