A new library provider for finding and playing podcasts via fyyd's keyless public API (api.fyyd.de), mounted at /fyyd and modelled on ytdy. A podcast search returns podcasts, each a container of episodes, so the tree carries one extra level: search-term -> podcast -> episodes-as-tracks, plus a fixed /fyyd/hot featured browse. An episode is a track whose enclosure URL the audio player streams directly -- no sidecar, no proto change, no new ProviderCommand. Search terms are creatable/renamable/ deletable in memory like tidal and youtube; podcasts and their episode lists are queueable and downloadable (W captures work out of the box). All network access goes through a Fyyd trait (fyyd/src/api.rs), faked in tests, so the provider logic runs with no network. Init is non-fatal and needs no credentials; every call is timeout-bounded and every listing capped. Wired into ProviderOrchestrator and the crabidy-server provider toggles alongside the other providers. Dev-flow artifacts: architecture/, quality/, and plan/fyyd-provider.md, plus a plan/summary.md entry. Docs updated across docs/src and the README. Deferred: live validation of the api.fyyd.de field shapes (offline unit suite cannot cover it) -- left as an open gate. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| src | ||
| Cargo.toml | ||
| README.md | ||
README.md
fyyd — the podcast provider
Mounts podcasts at /fyyd in the crabidy library, backed by
fyyd's public podcast search engine (api.fyyd.de).
No account or API key is required.
How it works
A podcast search returns podcasts, and each podcast is a container of
episodes, so /fyyd carries one level more than the music providers:
/fyyd/searchworks with no login. Press%to create a search term; the term becomes a persistent child node listing the matching podcasts. Terms are renamable (e, re-runs the search) and deletable (d). Terms live in memory — a server restart forgets them, but navigating to an old term path recreates it./fyyd/hotis a fixed browse of fyyd's currently featured ("hot") podcasts, so the provider is useful with no typing./fyyd/<branch>/<podcast>lists one podcast's episodes as tracks. It is queueable and downloadable, so you can queue orW-capture a whole podcast at once.
An episode is an ordinary track whose audio is the enclosure URL from
the podcast's feed — a plain media file the built-in player streams
directly. No sidecar, cipher solving, or byte-proxying is involved.
Configuration — fyyd.toml
All options are optional (fyyd needs no credentials):
# search_results = 20 # podcasts per search term
# hot_count = 20 # featured podcasts under /fyyd/hot
# episodes_per_podcast = 100 # episodes per podcast (also a hard cap)
# call_timeout_secs = 30 # per-request timeout
# base_url = "https://api.fyyd.de/0.2" # API base override
All network access goes through the Fyyd trait
(fyyd/src/api.rs), so the provider's tree/path logic is unit-tested
with a fake and no network. See architecture/fyyd-provider.md for the
tree shape and design decisions.