crabidy/fyyd/README.md

43 lines
1.8 KiB
Markdown

# fyyd — the podcast provider
Mounts podcasts at **`/fyyd`** in the crabidy library, backed by
[fyyd](https://fyyd.de)'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/search`** works 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/hot`** is 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 or `W`-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):
```toml
# 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.