package main import ( "fmt" "log" "os" "dim13.org/btget/meta" "dim13.org/btget/peer" "dim13.org/btget/tracker" ) func main() { if len(os.Args) != 2 { log.Fatal("usage: ", os.Args[0], " ") } tor, err := meta.New(os.Args[1]) if err != nil { log.Fatal(err) } buf := make([]byte, tor.Info.PieceLength) for i, p := range tor.Info.Pieces { off := tor.Info.Offset(i) n, err := tor.Info.ReadAt(buf, off) if err != nil { log.Fatal(err) } fmt.Printf("%d %d %d %x %v\n", i, off, n, p, p.Check(buf[:n])) } req := tracker.Request{ InfoHash: tor.Info.Hash(), PeerID: peer.NewID(), Compact: true, Port: 6881, } pool := make(map[string]tracker.Peer) for p := range req.Poll(tor.Announce) { addr := p.Addr() if _, ok := pool[addr]; !ok { log.Println("new peer", p) pool[addr] = p } } }