]> Sergey Matveev's repositories - btrtrc.git/blob - README.md
Merge remote-tracking branch 'libtorgo/master' into HEAD
[btrtrc.git] / README.md
1 # torrent
2
3 [![Codeship](https://www.codeship.io/projects/a2811d30-b0ce-0132-8983-5e604f7ebe37/status)](https://codeship.com/projects/69674)
4 [![GoDoc](https://godoc.org/github.com/anacrolix/torrent?status.svg)](https://godoc.org/github.com/anacrolix/torrent)
5
6 This repository implements BitTorrent-related packages and command-line utilities in Go.
7
8 There is support for protocol encryption, DHT, PEX, uTP, and various extensions. There are several storage backends provided, blob, file, mmap. You can use the provided binaries in `./cmd`, or use `torrent` as a library for your own applications.
9
10 See also the [mailing list](https://groups.google.com/forum/#!forum/go_torrent), and the [Gophers Slack channel](https://gophers.slack.com/#torrent).
11
12 ## Installation
13
14 Install the library package with `go get github.com/anacrolix/torrent`, or the provided cmds with `go get github.com/anacrolix/torrent/cmd/...`.
15
16 ## Library example
17
18 There is a small example in the [package documentation](https://godoc.org/github.com/anacrolix/torrent).
19
20 ## Commands
21
22 Here I'll describe what some of the provided commands in `./cmd` do.
23
24 Note that [`godo`](https://bitbucket.org/anacrolix/go-utils) that I invoke in the following examples is a command that builds and executes a Go import path, like `go run`. It's easier to use this convention than to spell out the install/invoke cycle for every single example.
25
26 ### torrent
27
28 Downloads torrents from the command-line.
29
30         $ go get github.com/anacrolix/torrent/cmd/torrent
31         $ torrent 'magnet:?xt=urn:btih:KRWPCX3SJUM4IMM4YF5RPHL6ANPYTQPU'
32     2015/04/01 02:08:20 main.go:137: downloaded ALL the torrents
33     $ md5sum ubuntu-14.04.2-desktop-amd64.iso
34     1b305d585b1918f297164add46784116  ubuntu-14.04.2-desktop-amd64.iso
35     $ echo such amaze
36     wow
37
38 ### torrentfs
39
40 torrentfs mounts a FUSE filesystem at `-mountDir`. The contents are the torrents described by the torrent files and magnet links at `-torrentPath`. Data for read requests is fetched only as required from the torrent network, and stored at `-downloadDir`.
41
42     $ mkdir mnt torrents
43     $ godo github.com/anacrolix/torrent/cmd/torrentfs -mountDir mnt -torrentPath torrents &
44     $ cd torrents
45     $ wget http://releases.ubuntu.com/14.04.2/ubuntu-14.04.2-desktop-amd64.iso.torrent
46     $ cd ..
47     $ ls mnt
48     ubuntu-14.04.2-desktop-amd64.iso
49     $ pv mnt/ubuntu-14.04.2-desktop-amd64.iso | md5sum
50     996MB 0:04:40 [3.55MB/s] [========================================>] 100%
51     1b305d585b1918f297164add46784116  -
52
53 ### torrent-magnet
54
55 Creates a magnet link from a torrent file. Note the extracted trackers, display name, and info hash.
56
57     $ godo github.com/anacrolix/torrent/cmd/torrent-magnet < ubuntu-14.04.2-desktop-amd64.iso.torrent
58         magnet:?xt=urn:btih:546cf15f724d19c4319cc17b179d7e035f89c1f4&dn=ubuntu-14.04.2-desktop-amd64.iso&tr=http%3A%2F%2Ftorrent.ubuntu.com%3A6969%2Fannounce&tr=http%3A%2F%2Fipv6.torrent.ubuntu.com%3A6969%2Fannounce
59
60 ### dht-ping
61
62 Pings DHT nodes with the given network addresses.
63
64     $ godo ./cmd/dht-ping router.bittorrent.com:6881 router.utorrent.com:6881
65     2015/04/01 17:21:23 main.go:33: dht server on [::]:60058
66     32f54e697351ff4aec29cdbaabf2fbe3467cc267 (router.bittorrent.com:6881): 648.218621ms
67     ebff36697351ff4aec29cdbaabf2fbe3467cc267 (router.utorrent.com:6881): 873.864706ms
68     2/2 responses (100.000000%)
69