package main import ( "fmt" "log" "github.com/anacrolix/torrent" "github.com/anacrolix/torrent/metainfo" ) func doVerify(cc *torrent.ClientConfig, pths []string) { cc.DisableTrackers = true cc.NoDHT = true cc.NoUpload = true cc.DisableUTP = true cc.DisableTCP = true cc.DisableIPv6 = true cc.DisableIPv4 = true cc.AcceptPeerConnections = false cc.DisableWebseeds = true client, err := torrent.NewClient(cc) if err != nil { log.Fatalln("torrent.NewClient:", err) } for _, pth := range pths { metaInfo, err := metainfo.LoadFromFile(pth) if err != nil { log.Fatalln("LoadFromFile:", err) } t, err := client.AddTorrent(metaInfo) if err != nil { log.Fatalln("AddTorrent:", err) } <-t.GotInfo() if err = saveTorrent(t); err != nil { log.Println("saveTorrent:", err) } go func() { sub := t.SubscribePieceStateChanges() defer sub.Close() var last int for piece := range sub.Values { if piece.Hashing && piece.Index > last { fmt.Printf("\r%s: %d / %d", pth, piece.Index, t.NumPieces()) last = piece.Index } } }() t.VerifyData() fmt.Printf("\n") } client.Close() <-client.Closed() }