Step 4: enclosure downloads

Streaming download with progress, content sniffing that replaces the
long-dead detectFileType(), HTML-body rejection, and placement by rename
from an incomplete dir on the same filesystem.

Filters are applied once at discovery and recorded in enclosures.state,
so the download queue is the table rather than the parse result and
max_new_per_check defers work instead of dropping it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RPyeapneuXrCdojsaiXGbe
This commit is contained in:
2026-09-09 20:38:30 +00:00
parent ab2583fc64
commit a8e1f474a6
6 changed files with 540 additions and 14 deletions

3
Cargo.lock generated
View File

@@ -1503,9 +1503,11 @@ dependencies = [
"chrono",
"clap",
"dirs",
"futures-util",
"infer",
"librqbit",
"opml",
"percent-encoding",
"reqwest",
"rss",
"rusqlite",
@@ -1515,6 +1517,7 @@ dependencies = [
"toml",
"tracing",
"tracing-subscriber",
"url",
]
[[package]]