]> Sergey Matveev's repositories - btrtrc.git/commitdiff
cmd/scrape -> cmd/tracker-announce, and a big refresh
authorMatt Joiner <anacrolix@gmail.com>
Thu, 26 Mar 2015 06:22:17 +0000 (17:22 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Thu, 26 Mar 2015 06:22:17 +0000 (17:22 +1100)
What it was doing was not scraping, that's something completely different. Now it can also announce magnets.

cmd/scrape/main.go [deleted file]
cmd/tracker-announce/main.go [new file with mode: 0644]

diff --git a/cmd/scrape/main.go b/cmd/scrape/main.go
deleted file mode 100644 (file)
index 15060f5..0000000
+++ /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 (file)
index 0000000..499b180
--- /dev/null
@@ -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)
+                       }
+               }
+       }
+}