]> Sergey Matveev's repositories - btrtrc.git/blob - cmd/btrtrc/verify.go
cmd/btrtrc client
[btrtrc.git] / cmd / btrtrc / verify.go
1 package main
2
3 import (
4         "fmt"
5         "log"
6
7         "github.com/anacrolix/torrent"
8         "github.com/anacrolix/torrent/metainfo"
9 )
10
11 func doVerify(cc *torrent.ClientConfig, pths []string) {
12         cc.DisableTrackers = true
13         cc.NoDHT = true
14         cc.NoUpload = true
15         cc.DisableUTP = true
16         cc.DisableTCP = true
17         cc.DisableIPv6 = true
18         cc.DisableIPv4 = true
19         cc.AcceptPeerConnections = false
20         cc.DisableWebseeds = true
21         client, err := torrent.NewClient(cc)
22         if err != nil {
23                 log.Fatalln("torrent.NewClient:", err)
24         }
25         for _, pth := range pths {
26                 metaInfo, err := metainfo.LoadFromFile(pth)
27                 if err != nil {
28                         log.Fatalln("LoadFromFile:", err)
29                 }
30                 t, err := client.AddTorrent(metaInfo)
31                 if err != nil {
32                         log.Fatalln("AddTorrent:", err)
33                 }
34                 <-t.GotInfo()
35                 if err = saveTorrent(t); err != nil {
36                         log.Println("saveTorrent:", err)
37                 }
38                 go func() {
39                         sub := t.SubscribePieceStateChanges()
40                         defer sub.Close()
41                         var last int
42                         for piece := range sub.Values {
43                                 if piece.Hashing && piece.Index > last {
44                                         fmt.Printf("\r%s: %d / %d", pth, piece.Index, t.NumPieces())
45                                         last = piece.Index
46                                 }
47                         }
48                 }()
49                 t.VerifyData()
50                 fmt.Printf("\n")
51         }
52         client.Close()
53         <-client.Closed()
54 }