@@ -25,7 +25,7 @@ A standalone CLI is available in the companion `gosh-dl-cli` project for users w
2525| Multi-connection HTTP/HTTPS | Up to 16 parallel connections per download |
2626| Content-Disposition detection | Automatic filename from server headers |
2727| Custom headers | User-Agent, Referer, cookies, arbitrary headers |
28- | Checksum verification | MD5, SHA-1, SHA- 256 |
28+ | Checksum verification | MD5, SHA-256 |
2929| Concurrent download management | Priority queue (Critical/High/Normal/Low) |
3030| Pause / resume / cancel | Full lifecycle control |
3131| Event system | Broadcast channels for progress, state changes |
@@ -57,6 +57,7 @@ A standalone CLI is available in the companion `gosh-dl-cli` project for users w
5757| uTP transport | 29 | LEDBAT congestion control, wired into peer connections (opt-in) |
5858| HTTP resume | — | ETag/Last-Modified validation |
5959| Mirror/failover | — | Automatic failover to alternate URLs |
60+ | Bandwidth scheduling | — | Time-of-day rules with live runtime limit updates |
6061| Recursive HTTP mirroring | — | Feature-gated via ` recursive-http ` ; crawls HTML directory indexes and expands into ordinary HTTP downloads |
6162| Private torrent handling | 27 | Disables DHT/PEX/LPD |
6263| Choking algorithm | — | Unchoke rotation, optimistic unchoking |
@@ -67,7 +68,6 @@ A standalone CLI is available in the companion `gosh-dl-cli` project for users w
6768| ---------| -------|
6869| DHT IPv6 | Depends on upstream ` mainline ` crate |
6970| Proxy support | Config field exists, not tested |
70- | Bandwidth scheduling | Code exists, not tested |
7171| File preallocation | Config field exists, not tested |
7272
7373## Quick Start
@@ -76,15 +76,15 @@ Add to your `Cargo.toml`:
7676
7777``` toml
7878[dependencies ]
79- gosh-dl = " 0.1 "
79+ gosh-dl = " 0.4 "
8080tokio = { version = " 1" , features = [" full" ] }
8181```
8282
8383To enable recursive HTTP directory mirroring:
8484
8585``` toml
8686[dependencies ]
87- gosh-dl = { version = " 0.1 " , features = [" recursive-http" ] }
87+ gosh-dl = { version = " 0.4 " , features = [" recursive-http" ] }
8888tokio = { version = " 1" , features = [" full" ] }
8989```
9090
@@ -277,7 +277,8 @@ while let Ok(event) = events.recv().await {
277277## Configuration
278278
279279``` rust
280- use gosh_dl :: {EngineConfig , HttpConfig , DownloadPriority };
280+ use gosh_dl :: {EngineConfig , HttpConfig , TorrentConfig };
281+ use gosh_dl :: config :: WebSeedConfig ;
281282use std :: path :: PathBuf ;
282283
283284let config = EngineConfig {
@@ -294,10 +295,26 @@ let config = EngineConfig {
294295 max_peers : 55 ,
295296 seed_ratio : 1.0 ,
296297 database_path : Some (PathBuf :: from (" /data/gosh-dl.db" )),
298+ http : HttpConfig {
299+ max_retries : 8 ,
300+ read_timeout : 90 ,
301+ .. Default :: default ()
302+ },
303+ torrent : TorrentConfig {
304+ webseed : WebSeedConfig {
305+ enabled : true ,
306+ max_connections : 6 ,
307+ .. Default :: default ()
308+ },
309+ .. Default :: default ()
310+ },
297311 .. Default :: default ()
298312};
299313```
300314
315+ You can also apply a replacement config at runtime with ` engine.set_config(config)?; ` .
316+ Queue concurrency and global bandwidth limits are applied to the live engine when you do this.
317+
301318### Bandwidth Scheduling
302319
303320``` rust
0 commit comments