rays a8e1f474a6 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
2026-09-09 20:38:30 +00:00
2026-09-09 20:38:30 +00:00
2026-09-09 20:34:09 +00:00
2026-09-09 19:34:25 +00:00
2026-09-09 20:38:30 +00:00
2026-09-09 20:38:30 +00:00
2026-09-09 19:34:25 +00:00
2026-09-09 20:38:30 +00:00
2026-09-09 19:34:25 +00:00

ipodderx-rs

A headless podcatcher: scans RSS/Atom feeds, downloads enclosures (HTTP and BitTorrent), files them into per-feed folders, and reaps old episodes to stay under a disk quota. Runs as a one-shot CLI or as a daemon with a Unix-socket JSON event stream for a UI to attach to.

Lineage

This is a modern Rust rewrite of ipodderx-core, the Python 2 engine behind iPodderX (2004-2008, Ray Slakinski & August Trometer), which was open-sourced under the MIT License in 2010.

What carries over: the feed scan and TTL handling, GUID/URL dedupe, per-feed and per-date download folders, keyword filters, the explicit-content filter, torrent enclosures, and "SmartSpace" — the oldest-first disk quota reaper.

What does not: iTunes and iPhoto export via AppleScript, text-to-speech enclosures, the Windows WMP/COM paths, XML plists and Python pickles for state, the directory.iPodderX.com survey ping, 3DES-encrypted preferences, and the printMSG stdout protocol (replaced by a JSON-lines socket).

Status

Under construction. See PROGRESS.md for what works today.

Configuration

~/.config/ipx/config.toml, state in ~/.local/share/ipx/state.db. See PROGRESS.md until the usage section lands.

License

MIT. See LICENSE.

Description
No description provided
Readme MIT 9.5 MiB
Languages
Rust 49%
JavaScript 27.3%
TypeScript 15.4%
CSS 6.8%
HTML 1.1%
Other 0.4%