Auto-download new podcast episodes from an RSS feed
A show folder under Kinderpodcasts/ opts in by containing a feed.txt marker naming its RSS feed. A new PodcastFeedService polls every such feed every 6 hours (and once at startup), downloads any episode not already on disk using the existing YYYYMMDD - Title.ext convention, and triggers the same rescan-and-broadcast sequence "Bibliothek neu einlesen" already uses - now shared via App.rescan_library() instead of duplicated. A show with no feed.txt is untouched, so there is no new config section for this. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,9 @@ requires-python = ">=3.13"
|
||||
dependencies = [
|
||||
"aiomqtt>=2.0",
|
||||
"fastapi>=0.115",
|
||||
# Podcast RSS feeds in the wild are full of small quirks (odd dates, missing
|
||||
# namespaces); parsing them by hand invites silently dropping episodes.
|
||||
"feedparser>=6.0",
|
||||
# Also what tests drive the ASGI app with - plain httpx is deprecated in favour of
|
||||
# this for exactly that. Runtime uses it to proxy the room page's Home Assistant
|
||||
# calls, so the long-lived token never has to leave the backend.
|
||||
@@ -68,5 +71,5 @@ warn_unreachable = true
|
||||
[[tool.mypy.overrides]]
|
||||
# numpy ships its own types, but only when the `analysis` extra is installed - a plain
|
||||
# checkout must still type-check clean, so it needs the same treatment as librosa.
|
||||
module = ["vlc", "serial_asyncio", "ruamel.*", "librosa.*", "numpy"]
|
||||
module = ["vlc", "serial_asyncio", "ruamel.*", "librosa.*", "numpy", "feedparser"]
|
||||
ignore_missing_imports = true
|
||||
|
||||
Reference in New Issue
Block a user