]> Sergey Matveev's repositories - btrtrc.git/blob - cmd/torrent/main.go
Implementing bitfields and connection message handling
[btrtrc.git] / cmd / torrent / main.go
1 package main
2
3 import (
4         "bitbucket.org/anacrolix/go.torrent"
5         "flag"
6         metainfo "github.com/nsf/libtorgo/torrent"
7         "log"
8         "net"
9 )
10
11 var (
12         downloadDir = flag.String("downloadDir", "", "directory to store download torrent data")
13 )
14
15 func init() {
16         log.SetFlags(log.LstdFlags | log.Lshortfile)
17         flag.Parse()
18 }
19
20 func main() {
21         client := torrent.NewClient(*downloadDir)
22         for _, arg := range flag.Args() {
23                 metaInfo, err := metainfo.LoadFromFile(arg)
24                 if err != nil {
25                         log.Fatal(err)
26                 }
27                 err = client.AddTorrent(metaInfo)
28                 if err != nil {
29                         log.Fatal(err)
30                 }
31                 err = client.AddPeers(torrent.BytesInfoHash(metaInfo.InfoHash), []torrent.Peer{{
32                         IP:   net.IPv4(127, 0, 0, 1),
33                         Port: 53219,
34                 }})
35                 if err != nil {
36                         log.Fatal(err)
37                 }
38         }
39         client.WaitAll()
40         client.Close()
41 }