Two independent bugs, either of which made gather_castopod() report
total_downloads: 0 on a dev machine — indistinguishable from a podcast nobody
listens to.
- NAS_SSH hardcoded mmgnas-10g, which is only reachable when the 10G cable is
physically connected. Now probed once per process with a 2s timeout and
falls back to mmgnas; NAS_HOST overrides detection entirely. Same detection
added to deploy_stats_cron.sh.
- _run_db_query treated any docker binary on PATH as "running on the NAS", so
a machine with Docker Desktop queried its own daemon, found no castopod
container, and never fell back to SSH. Only the QNAP container-station path
counts now.
Real figures with both fixed: 3803 downloads, 750 unique listeners.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Castopod password, DB password, BunnyCDN keys, Postiz JWT/IDs,
and monitoring token all moved to environment variables.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix TTS text pipeline: new caps handling (spell out unknown acronyms, lowercase
emphasis words), action-word lookahead for parenthetical stripping, abbreviation
expansions (US→United States, NM→New Mexico), pronunciation fixes
- Inworld TTS: camelCase API fields, speakingRate per-voice overrides, retry logic
with exponential backoff (3 attempts)
- Footer redesign: SVG icons for social/podcast links across all pages
- Stats page: show "Rate us on Spotify" instead of "not public" placeholder
- New voices, expanded caller prompts and problem scenarios
- Social posting via Postiz, YouTube upload in publish pipeline
- Episode transcripts 15-25, terms page, sitemap updates
- Fix invoice script: match Timing totals using merged Task+App intervals
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- make_clips.py: Extract best moments from episodes as short-form clips
(9:16 vertical MP4 with captions for TikTok/Shorts/Reels)
- deploy_stats_cron.sh: Deploy podcast_stats.py to NAS as Docker container
running hourly with auto-restart
- podcast_stats.py: Add _find_ytdlp() for Docker compatibility, auto-detect
local Docker for Castopod DB queries
- publish_episode.py: Upgrade Whisper model from base to large-v3
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>