Do not auto-download enclosures that are not audio or video
Blog feeds put each article's header image in an <enclosure>, so a text feed read as a podcast full of episodes: 149 images, 74 MB across 11 feeds. media_types defaults to audio and video, with a per-feed override. Such enclosures stay listed and stay downloadable by hand; the row names what it is rather than saying "skipped". An unknown type is allowed, since the real type is only known after downloading, and a torrent is allowed as a container judged once unpacked. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AdXho5tTkjFLeUXKbEjKBh
This commit is contained in:
24
PROGRESS.md
24
PROGRESS.md
@@ -56,6 +56,30 @@ and until now nothing set them.
|
||||
|
||||
---
|
||||
|
||||
## 2026-09-10 — Image enclosures were being treated as episodes
|
||||
|
||||
Reported as "Abort Retry Fail shows downloads but there are none". It had 20 enclosures, all
|
||||
`image/jpeg`: Substack puts each article's header image in the RSS `<enclosure>` tag, so ipx
|
||||
downloaded 20 JPEGs and counted them as episodes. Across the OPML subscription: 149 images, 74 MB,
|
||||
11 feeds.
|
||||
|
||||
`[general] media_types` defaults to `["audio", "video"]`, with a per-feed override. An enclosure
|
||||
whose top-level type is not wanted is recorded and shown but not auto-downloaded.
|
||||
|
||||
Clarified mid-change: those enclosures should still be *visible*, just not fetched automatically.
|
||||
So nothing is hidden — the row names what it is ("image", "pdf", "torrent") instead of a bare
|
||||
"skipped", and the download button still works if you want that file.
|
||||
|
||||
Two judgement calls in `wanted_media`: an **unknown or absent** type is allowed, because the real
|
||||
type is only known after downloading and refusing everything untyped would drop feeds that simply
|
||||
omit the attribute; and a **torrent** is allowed, being a container rather than media, judged once
|
||||
unpacked.
|
||||
|
||||
The enclosure-less case Ray also described was already correct — every download affordance in the
|
||||
row is gated on the enclosure existing. Checked before changing anything.
|
||||
|
||||
---
|
||||
|
||||
## 2026-09-10 — Daemon I/O log tab, and Playwright
|
||||
|
||||
**Log tabs.** All / Daemon I/O / Scans / HTTP. "Daemon I/O" is the control protocol itself: every
|
||||
|
||||
Reference in New Issue
Block a user