]> Sergey Matveev's repositories - btrtrc.git/blobdiff - cmd/torrent/scrape.go
Support scraping from HTTP trackers
[btrtrc.git] / cmd / torrent / scrape.go
index 300f6282e92e182db784639409575491c8c705d7..01a59b7ff57ef6dabfb093391335cdc34c8b38ea 100644 (file)
@@ -3,39 +3,26 @@ package main
 import (
        "context"
        "fmt"
-       "net/url"
 
-       "github.com/anacrolix/torrent/tracker/udp"
        "github.com/davecgh/go-spew/spew"
 
        "github.com/anacrolix/torrent"
+       "github.com/anacrolix/torrent/tracker"
 )
 
-type ScrapeCmd struct {
-       Tracker    string `arg:"positional"`
-       InfoHashes []torrent.InfoHash
+type scrapeCfg struct {
+       Tracker    string             `arg:"positional"`
+       InfoHashes []torrent.InfoHash `arity:"+" arg:"positional"`
 }
 
-func scrape(flags ScrapeCmd) error {
-       trackerUrl, err := url.Parse(flags.Tracker)
+func scrape(flags scrapeCfg) error {
+       cc, err := tracker.NewClient(flags.Tracker, tracker.NewClientOpts{})
        if err != nil {
-               return fmt.Errorf("parsing tracker url: %w", err)
-       }
-       cc, err := udp.NewConnClient(udp.NewConnClientOpts{
-               Network: trackerUrl.Scheme,
-               Host:    trackerUrl.Host,
-               //Ipv6:    nil,
-               //Logger:  log.Logger{},
-       })
-       if err != nil {
-               return fmt.Errorf("creaing new udp tracker conn client: %w", err)
+               err = fmt.Errorf("creating new tracker client: %w", err)
+               return err
        }
        defer cc.Close()
-       var ihs []udp.InfoHash
-       for _, ih := range flags.InfoHashes {
-               ihs = append(ihs, ih)
-       }
-       scrapeOut, err := cc.Client.Scrape(context.TODO(), ihs)
+       scrapeOut, err := cc.Scrape(context.TODO(), flags.InfoHashes)
        if err != nil {
                return fmt.Errorf("scraping: %w", err)
        }