podcast_helper.gui module

Podcast Helper — minimal single-page GUI (“episode browser”).

This module holds nothing but the self-contained HTML document served by the FastAPI app at GET /gui (see podcast_helper.api). It is deliberately build-step-free: one string of HTML + Tailwind (via CDN) + vanilla ES-module JavaScript. There is no bundler, no framework, no npm — the whole page is a static asset the API returns verbatim.

Why a separate module

Keeping the (long) HTML out of podcast_helper.api keeps the route definitions readable and mirrors the AI Helpers suite convention (see audio_helper/gui.py): sibling repos copy the plumbing and swap the domain widgets. Here the domain widget is a feed / episode browser, not an audio “audition bench”.

What the page does

  • Enter any feed / RSS / audio / yt-dlp URL in a single box.

  • List episodes (calls GET /feed) → a scrollable list of episode cards with cover art, title, publish date and duration.

  • Probe any URL (calls GET /probe) → shows how podcast-helper classified it (source_kind / is_live / header count) so ambiguity is never buried.

  • Pick an episode → its metadata renders on the right, its enclosure_url loads into an inline <audio> player for instant preview (the browser streams the enclosure directly — no server round-trip for playback).

  • Record the selected episode (or any raw URL) to a compressed archive via POST /record and offer the resulting file as a download.

Everything talks to the SAME FastAPI endpoints the CLI and MCP surfaces use — the GUI adds zero new server logic and never uploads the user’s data anywhere.

Author

Warith Harchaoui, Ph.D. — https://linkedin.com/in/warith-harchaoui/