docs/podcasts.md: Podcast-Radio geplant (neueste ungehörte Strom-Folge, keine Spuren, eigene Radio-gehört-Liste)
Some checks failed
Build and push Docker image / build (push) Failing after 0s
Test / test (push) Failing after 0s
Test / e2e (push) Failing after 0s

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mrwnslz 2026-10-25 13:03:15 +01:00
parent 89827086ba
commit 21f5e33e57

View file

@ -92,6 +92,32 @@ One controlled step out (Apple's episode search and fyyd; no key):
Show search stays on Apple (best coverage).
## Podcast-Radio (planned 2026-10-25)
Listening without committing: one button plays the Strom like a station.
- **The rule**: the radio always plays the **newest** (publication date) Strom episode that is
neither played, nor started (normally), nor done for the radio. So an episode that comes out
while one plays is next (the one playing isn't interrupted); otherwise it goes back in time,
without limit. Auf Abruf podcasts and audiobooks aren't in the Strom, so not in the radio.
- **Leaves no trace**: no progress (no Verlauf, no "Angefangen", no played mark, not counted in
`heard_365`), the Wiedergabeliste and Merkliste unchanged, nothing downloaded (it streams; a
downloaded file plays if there is one), the Strom's marks unchanged.
- **Done for the radio**: run to its end or skipped (⏭, notification, headset, car). Pausing
isn't: the radio keeps its episode and place for itself, ▶ goes on there.
- **Committing**: in the player while the radio plays, + (Merkliste) and "Normal weiterhören"
(first in the Wiedergabeliste at the current place; from then on it plays as usual, with
progress). Playing anything normally switches the radio off (as an audiobook does).
- **Server**: `PodcastRadioHeard(user, episode, at)`, kept apart from progress, pruned after 60
days. `GET /podcasts/radio/?limit=5` → the next episodes by the rule (`{episodes: [...]}`, the
rows of the episode lists); `POST /podcasts/radio/heard/ {"episode_id"}`. Shared by all devices.
- **Clients** (both at once): Android (`PodcastRadio.kt` beside `BookPlay.kt`: the playlist is
[current, next]; RadioService's `save()` / `markPlayed()` / `followQueue()` leave radio items
alone; reloads before each transition and every 10 minutes while playing — the server fetches
feeds every 15 minutes) and the web player (`podcasts-web.js`, so the browser and the desktop
app). Button "📻 Radio" at the top of the Strom; the mini player's ▶ goes on with the radio.
- Later perhaps: a radio of one folder, a longest length.
## Moving over
- Today's queue (74) becomes the Merkliste; the Wiedergabeliste starts empty.