+++ /dev/null
-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)
- }
- }
-}
--- /dev/null
+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)
+ }
+ }
+ }
+}