Skip to content

feat: download a range of podcast episodes - #2192

Merged
SamTV12345 merged 1 commit into
mainfrom
feat/download-episode-range
Jul 23, 2026
Merged

feat: download a range of podcast episodes#2192
SamTV12345 merged 1 commit into
mainfrom
feat/download-episode-range

Conversation

@SamTV12345

Copy link
Copy Markdown
Owner

Closes #2140.

For podcasts with thousands of episodes where only a slice matters, adds a Download an episode range batch action: queue only the missing episodes whose chronological position (oldest = 1, matching the episode-numbering scheme) falls within an inclusive [from, to] range.

Backend

  • POST /api/v1/podcasts/{id}/episodes/download-range (admin-only, returns 202), body { from, to }.
  • download_episode_range_for_podcast sorts episodes ascending by publication date, slices [from-1, to) (clamped), and downloads the missing ones.
  • Extracted the parallel-download loop into a shared download_missing_in helper reused by download-all.
  • Tests: 202-accepted happy path + non-admin rejection.

Frontend

  • Two number inputs + Run in the podcast settings modal's Batch actions tab.
  • Regenerated only the new path/schema/operation into schema.d.ts by hand (a full regen drops config-gated routes like Mopidy, so it stays hand-maintained).

Also

  • Added the missing podcast-episode-details i18n key (a screen-reader-only label that rendered the raw kebab key).
  • Extended settings-coverage.spec.ts with the new action (label + a functional range-download test).

All backend tests and the e2e settings suite pass locally.

Adds a per-podcast batch action to queue only the episodes whose chronological position (oldest = 1) falls within an inclusive [from, to] range, for huge feeds where only a slice matters. New endpoint POST /podcasts/{id}/episodes/download-range (admin-only, 202), backed by a reusable parallel-download helper shared with download-all. UI lives in the podcast settings modal's Batch actions tab.

Also adds the missing podcast-episode-details i18n key (a screen-reader-only label that was rendering the raw kebab key), and extends the e2e settings coverage with the new action.
@SamTV12345
SamTV12345 enabled auto-merge (squash) July 23, 2026 20:41
@SamTV12345
SamTV12345 merged commit 8ff11ae into main Jul 23, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature request] Option to download a range of podcast episodes

1 participant