From: Matt Joiner Date: Thu, 26 Mar 2015 06:22:17 +0000 (+1100) Subject: cmd/scrape -> cmd/tracker-announce, and a big refresh X-Git-Tag: v1.0.0~1240 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=9f62098e85c64931e0b6d9c895d895688fd349e0;p=btrtrc.git cmd/scrape -> cmd/tracker-announce, and a big refresh What it was doing was not scraping, that's something completely different. Now it can also announce magnets. --- diff --git a/cmd/scrape/main.go b/cmd/scrape/main.go deleted file mode 100644 index 15060f5d..00000000 --- a/cmd/scrape/main.go +++ /dev/null @@ -1,41 +0,0 @@ -package main - -import ( - "flag" - "log" - "os" - - "github.com/anacrolix/torrent/tracker" - _ "github.com/anacrolix/torrent/tracker/udp" - "github.com/anacrolix/torrent/util" - metainfo "github.com/anacrolix/libtorgo/metainfo" -) - -func main() { - flag.Parse() - mi, err := metainfo.Load(os.Stdin) - if err != nil { - log.Fatal(err) - } - for _, tier := range mi.AnnounceList { - for _, url := range tier { - tr, err := tracker.New(url) - if err != nil { - log.Fatal(err) - } - err = tr.Connect() - if err != nil { - log.Fatal(err) - } - ar := tracker.AnnounceRequest{ - NumWant: -1, - } - util.CopyExact(ar.InfoHash, mi.Info.Hash) - resp, err := tr.Announce(&ar) - if err != nil { - log.Fatal(err) - } - log.Print(resp) - } - } -} diff --git a/cmd/tracker-announce/main.go b/cmd/tracker-announce/main.go new file mode 100644 index 00000000..499b180a --- /dev/null +++ b/cmd/tracker-announce/main.go @@ -0,0 +1,60 @@ +package main + +import ( + "flag" + "log" + "strings" + + "github.com/anacrolix/libtorgo/metainfo" + + "github.com/anacrolix/torrent" + "github.com/anacrolix/torrent/tracker" + _ "github.com/anacrolix/torrent/tracker/http" + _ "github.com/anacrolix/torrent/tracker/udp" +) + +func argSpec(arg string) (ts *torrent.TorrentSpec, err error) { + if strings.HasPrefix(arg, "magnet:") { + return torrent.TorrentSpecFromMagnetURI(arg) + } + mi, err := metainfo.LoadFromFile(arg) + if err != nil { + return + } + ts = torrent.TorrentSpecFromMetaInfo(mi) + return +} + +func main() { + flag.Parse() + ar := tracker.AnnounceRequest{ + NumWant: -1, + } + for _, arg := range flag.Args() { + ts, err := argSpec(arg) + if err != nil { + log.Fatal(err) + } + ar.InfoHash = ts.InfoHash + for _, tier := range ts.Trackers { + for _, tURI := range tier { + tCl, err := tracker.New(tURI) + if err != nil { + log.Print(err) + continue + } + err = tCl.Connect() + if err != nil { + log.Print(err) + continue + } + resp, err := tCl.Announce(&ar) + if err != nil { + log.Print(err) + continue + } + log.Printf("%s: %#v", tCl, resp) + } + } + } +}