41 lines
829 B
Go
41 lines
829 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/davecgh/go-spew/spew"
|
|
|
|
"github.com/anacrolix/torrent"
|
|
"github.com/anacrolix/torrent/tracker"
|
|
"github.com/anacrolix/torrent/tracker/udp"
|
|
)
|
|
|
|
type AnnounceCmd struct {
|
|
Event udp.AnnounceEvent
|
|
Port *uint16
|
|
Tracker string `arg:"positional"`
|
|
InfoHash torrent.InfoHash `arg:"positional"`
|
|
}
|
|
|
|
func announceErr(flags AnnounceCmd) error {
|
|
req := tracker.AnnounceRequest{
|
|
InfoHash: flags.InfoHash,
|
|
Port: uint16(torrent.NewDefaultClientConfig().ListenPort),
|
|
NumWant: -1,
|
|
Event: flags.Event,
|
|
Left: -1,
|
|
}
|
|
if flags.Port != nil {
|
|
req.Port = *flags.Port
|
|
}
|
|
response, err := tracker.Announce{
|
|
TrackerUrl: flags.Tracker,
|
|
Request: req,
|
|
}.Do()
|
|
if err != nil {
|
|
return fmt.Errorf("doing announce: %w", err)
|
|
}
|
|
spew.Dump(response)
|
|
return nil
|
|
}
|