• Stars
    star
    5,279
  • Rank 7,453 (Top 0.2 %)
  • Language
    Go
  • License
    Mozilla Public Li...
  • Created over 9 years ago
  • Updated 29 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Full-featured BitTorrent client package and utilities

torrent

PkgGoDev

This repository implements BitTorrent-related packages and command-line utilities in Go. The emphasis is on use as a library from other projects. It's been used 24/7 in production by downstream services since late 2014. The implementation was specifically created to explore Go's concurrency capabilities, and to include the ability to stream data directly from the BitTorrent network. To this end it supports seeking, readaheads and other features exposing torrents and their files with the various Go idiomatic io package interfaces. This is also demonstrated through torrentfs.

There is support for protocol encryption, DHT, PEX, uTP, and various extensions. There are several data storage backends provided: blob, file, bolt, mmap, and sqlite, to name a few. You can write your own to store data for example on S3, or in a database.

Some noteworthy package dependencies that can be used for other purposes include:

Installation

Install the library package with go get github.com/anacrolix/torrent, or the provided cmds with go install github.com/anacrolix/torrent/cmd/...@latest.

Library examples

There are some small examples in the package documentation.

Mentions

Downstream projects

There are several web-frontends, sites, Android clients, storage backends and supporting services among the known public projects:

  • cove: Personal torrent browser with streaming, DHT search, video transcoding and casting.
  • confluence: torrent client as a HTTP service
  • Gopeed: Gopeed (full name Go Speed), a high-speed downloader developed by Golang + Flutter, supports (HTTP, BitTorrent, Magnet) protocol, and supports all platforms.
  • Erigon: an implementation of Ethereum (execution layer with embeddable consensus layer), on the efficiency frontier.
  • exatorrent: Elegant self-hostable torrent client
  • bitmagnet: A self-hosted BitTorrent indexer, DHT crawler, content classifier and torrent search engine with web UI, GraphQL API and Servarr stack integration.
  • TorrServer: Torrent streaming server over http
  • distribyted: Distribyted is an alternative torrent client. It can expose torrent files as a standard FUSE, webDAV or HTTP endpoint and download them on demand, allowing random reads using a fixed amount of disk space.
  • Mangayomi: Cross-platform app that allows users to read manga and stream anime from a variety of sources including BitTorrent.
  • Simple Torrent: self-hosted HTTP remote torrent client
  • autobrr: autobrr redefines download automation for torrents and Usenet, drawing inspiration from tools like trackarr, autodl-irssi, and flexget.
  • mabel: Fancy BitTorrent client for the terminal
  • webtor.io: free cloud BitTorrent-client
  • Android Torrent Client: Android torrent client
  • libtorrent: gomobile wrapper
  • Go-PeersToHTTP: Simple torrent proxy to http stream controlled over REST-like api
  • CortexFoundation/torrentfs: Independent HTTP service for file seeding and P2P file system of cortex full node
  • Torrent WebDAV Client: Automatic torrent download, streaming, WebDAV server and client.
  • goTorrent: torrenting server with a React web frontend
  • Go Peerflix: Start watching the movie while your torrent is still downloading!
  • hTorrent: HTTP to BitTorrent gateway with seeking support.
  • Remote-Torrent: Download Remotely and Retrieve Files Over HTTP
  • Trickl: torrent client for android
  • ANT-Downloader: ANT Downloader is a BitTorrent Client developed by golang, angular 7, and electron
  • Elementum (up to version 0.0.71)

Help

Communication about the project is primarily through Discussions and the issue tracker.

Command packages

Here I'll describe what some of the packages in ./cmd do. See installation to make them available.

torrent

torrent download

Downloads torrents from the command-line.

$ 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

Creates a magnet link from a torrent file. Note the extracted trackers, display name, and 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

See torrent metainfo --help for other metainfo related commands.

torrentfs

torrentfs mounts a FUSE filesystem at -mountDir. The contents are the torrents described by the torrent files and magnet links at -metainfoDir. Data for read requests is fetched only as required from the torrent network, and stored at -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  -

More Repositories

1

dms

A UPnP DLNA Digital Media Server that includes basic video transcoding. Tested on a Panasonic Viera television, several Android UPnP apps, and Chromecast.
Go
585
star
2

dht

dht is used by anacrolix/torrent, and is intended for use as a library in other projects both torrent related and otherwise
Go
296
star
3

confluence

Torrent client as a HTTP service
Go
224
star
4

utp

Use anacrolix/go-libutp instead
Go
171
star
5

go-libutp

Go wrapper of libutp reference uTP C implementation
C++
87
star
6

missinggo

Stuff that's missing in Go stdlib, or hasn't made it into its own repo.
Go
83
star
7

stm

Software Transactional Memory in Go
Go
69
star
8

possum

concurrent disk-backed cache supporting efficient direct file I/O, transactions, and snapshots using file cloning and sparse files
Rust
56
star
9

godo

godo is an improved `go run`
Go
37
star
10

btlink

a HTTP(s) addressing scheme for BitTorrent
Go
29
star
11

cove

A combined BitTorrent frontend and DHT indexer for personal use
21
star
12

envpprof

Allows run time configuration of Go's pprof features and default HTTP mux using environment variables.
Go
17
star
13

squirrel

Go sqlite3 cache
Go
17
star
14

sqlrpc

SQL over RPC, specifically for SQLite
Go
10
star
15

tagflag

declarative flag parsing for Go using struct tags
Go
10
star
16

gasp

Clojure-inspired LISP implemented in Go
Go
8
star
17

ffprobe

Go ffprobe wrapper
Go
8
star
18

sync

A sync package clone that provides pprof debugging of sync.Mutex to help with diagnosing deadlocks.
Go
8
star
19

transcoder

http transcoder microservice
Haskell
8
star
20

castlink

Elm
8
star
21

mmsg

Exposes batch message receives (recvmmsg)
Go
7
star
22

archive

Dumping ground for code from before I really used VCS, or doesn't go anywhere else
Visual Basic
6
star
23

various

Some code I muck about with.
Erlang
6
star
24

go-libp2p-dht-tool

readline-like CLI utility to operate on stand-alone libp2p DHT node instance
Go
6
star
25

log

context-style logging for Go. similar to zerolog but with lots of allocations
Go
5
star
26

generics

wow
Go
4
star
27

imdbrt

Show RT rating on IMDB pages
JavaScript
4
star
28

lsan

Go leak sanitizer/memory address sanitizer helper
Go
3
star
29

dog

Go
2
star
30

dms-gtk-gui

GTK+ GUI for anacrolix/dms
Go
2
star
31

thinfs

A modern "FAT64" with better performing design.
C
2
star
32

harkon

A whitespace lisp interpretter
C++
2
star
33

http-ping

An actually useful HTTP ping tool
Go
2
star
34

wat

Tests of behaviour in the language and standard library
Go
2
star
35

webtorrent-public

Public parts of anacrolix/webtorrent
Go
2
star
36

ipfslog

A minimal wrapper around IPFS logging
Go
2
star
37

bargle

Aleena beware!
Go
2
star
38

bitmap

1
star
39

gorond

GROND!! GROND!! Code formatter for Go
Go
1
star
40

gostdapp

Go
1
star
41

goanna

Yet another Go dumping ground.
Go
1
star
42

haskell-dht

Mucking around with DHT using Haskell
Haskell
1
star
43

publicip

Go
1
star
44

multiless

Helper for partial ordering in Go
Go
1
star
45

chansync

Go
1
star
46

parser

Go
1
star
47

porssh

i did a haskell
Haskell
1
star
48

sassy

trippa snippa filesystem trimmer
Go
1
star
49

haskell

Haskell
1
star
50

boltextra

Enhancements and utilities for bolt
Go
1
star
51

goproxy

HAProxy but not arcane
Go
1
star
52

tlsterm

TLS termination with just command-line flags
Go
1
star
53

pydlnadms

Automatically exported from code.google.com/p/pydlnadms
Python
1
star
54

aragorn

BitTorrent tracker using Redis and Go
1
star