cmd/torrent/main.go | 12 ++++++++---- diff --git a/cmd/torrent/main.go b/cmd/torrent/main.go index 0d32aa4bfb3d090da4d213e0e9d3353b7784d562..a04eb5eabb341125811d8bf91a7a0006630a4ee2 100644 --- a/cmd/torrent/main.go +++ b/cmd/torrent/main.go @@ -40,6 +40,7 @@ if t.Info() == nil { 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 @@ if r.Partial { 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 @@ humanize.Bytes(uint64(t.Length())), completedPieces, t.NumPieces(), partialPieces, + humanize.Bytes(uint64(stats.BytesReadUsefulData.Int64()-lastStats.BytesReadUsefulData.Int64())), ) if line != lastLine { lastLine = line @@ -69,6 +72,7 @@ } if pieceStates { fmt.Println(psrs) } + lastStats = stats } }() } @@ -155,7 +159,6 @@ } var flags struct { Debug bool - Stats *bool *DownloadCmd `arg:"subcommand:download"` *ListFilesCmd `arg:"subcommand:list-files"` @@ -176,8 +179,9 @@ PackedBlocklist string 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"`