Hojun-Cho ee66235c36 main: dedupe followed .torrent files by infohash
a .torrent fetched over http is added to the shared client in a second
pass (followUps); two that name the same torrent would share one torrent
on the refcount-less client, and the first to finish would Drop it out
from under the other, stranding it at 0%. dedupe the followed files by
infohash, the guard build() already applies to pass-1 sources.
2026-06-20 19:28:32 +09:00
2026-06-19 12:32:14 +09:00
2026-06-19 12:32:14 +09:00
2026-06-19 12:32:14 +09:00
2026-06-19 12:32:14 +09:00
2026-06-19 12:32:14 +09:00
2026-06-19 12:32:14 +09:00

got

A command-line download tool in Go. It fetches HTTP(S) files over multiple connections and downloads BitTorrent magnets and .torrent files — one binary, familiar flags.

Build

go build -o got .

Needs Go 1.25+.

Usage

# HTTP download with 16 connections
got -x16 -s16 https://example.com/big.iso

# let got pick the connection count from the file size
got --auto-split https://example.com/big.iso

# resume an interrupted download
got -c https://example.com/big.iso

# one file from several mirrors (connections spread across servers,
# a dead mirror falls over); -Z downloads them as separate files instead
got -x4 https://a.example/big.iso https://b.example/big.iso

# a torrent or magnet; seed for 30 minutes after finishing
got --seed-time=30 ubuntu.torrent
got 'magnet:?xt=urn:btih:...'

# many downloads, two at a time
got -j2 -i urls.txt

Run got --help (or --help=all) for every option.

Common options

flag meaning default
-d, --dir output directory .
-o, --out output filename from URL
-c, --continue resume a partial download false
-x, --max-connection-per-server connections to one server (116) 1
-s, --split split a download into N connections 5
--auto-split choose connections from file size (overrides -x/-s) false
-j, --max-concurrent-downloads downloads at once 5
--max-overall-download-limit global speed cap 0 (off)
--checksum verify the finished file: TYPE=DIGEST (sha-256, sha-1, …)
--seed-time minutes to seed after a torrent finishes by ratio
--seed-ratio stop seeding at this ratio 1.0
-S, --show-files list torrent files and exit
-q, --quiet no progress output false

Resume

HTTP downloads resume from a small <file>.got sidecar — just re-run with -c. Torrents resume from the data already on disk. To resume across runs, point --save-session and -i at the same file:

got -c --save-session=got.session -i got.session  <urls/magnets...>

Notes

  • BitTorrent uses anacrolix/torrent; HTTP uses the standard library.
  • Not implemented: FTP/SFTP, Metalink, and the JSON-RPC server.
  • When several torrents run at once, --max-download-limit / --max-upload-limit apply per run rather than per torrent (--max-overall-* are exact).
Description
No description provided
Readme 591 KiB
Languages
Go 100%