From b9c36ebef3eebca86de7d7e1ead36f1cf569a6f4 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Wed, 12 May 2021 14:26:23 +1000 Subject: [PATCH] cmd/torrent: Track download rate --- cmd/torrent/main.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/cmd/torrent/main.go b/cmd/torrent/main.go index 0d32aa4b..a04eb5ea 100644 --- a/cmd/torrent/main.go +++ b/cmd/torrent/main.go @@ -40,6 +40,7 @@ func torrentBar(t *torrent.Torrent, pieceStates bool) { fmt.Printf("%v: getting torrent info for %q\n", time.Since(start), t.Name()) <-t.GotInfo() } + lastStats := t.Stats() var lastLine string for range time.Tick(time.Second) { var completedPieces, partialPieces int @@ -52,8 +53,9 @@ func torrentBar(t *torrent.Torrent, pieceStates bool) { partialPieces += r.Length } } + stats := t.Stats() line := fmt.Sprintf( - "%v: downloading %q: %s/%s, %d/%d pieces completed (%d partial)\n", + "%v: downloading %q: %s/%s, %d/%d pieces completed (%d partial): %v/s\n", time.Since(start), t.Name(), humanize.Bytes(uint64(t.BytesCompleted())), @@ -61,6 +63,7 @@ func torrentBar(t *torrent.Torrent, pieceStates bool) { completedPieces, t.NumPieces(), partialPieces, + humanize.Bytes(uint64(stats.BytesReadUsefulData.Int64()-lastStats.BytesReadUsefulData.Int64())), ) if line != lastLine { lastLine = line @@ -69,6 +72,7 @@ func torrentBar(t *torrent.Torrent, pieceStates bool) { if pieceStates { fmt.Println(psrs) } + lastStats = stats } }() } @@ -155,7 +159,6 @@ func addTorrents(client *torrent.Client) error { var flags struct { Debug bool - Stats *bool *DownloadCmd `arg:"subcommand:download"` *ListFilesCmd `arg:"subcommand:list-files"` @@ -176,8 +179,9 @@ type DownloadCmd struct { PublicIP net.IP Progress bool `default:"true"` PieceStates bool - Quiet bool `help:"discard client logging"` - Dht bool `default:"true"` + Quiet bool `help:"discard client logging"` + Stats *bool `help:"print stats at termination"` + Dht bool `default:"true"` TcpPeers bool `default:"true"` UtpPeers bool `default:"true"` -- 2.48.1