siftlode/backend/app/youtube
npeter83 248782493c fix(youtube): map httpx transport errors to YouTubeError
The YouTubeClient issued httpx requests directly, so a network/transport
failure (egress proxy unreachable, DNS, timeout, connection reset) escaped
as a raw httpx.ConnectError. Callers only guard against YouTubeError, so such
a fault propagated uncaught and surfaced as a 500 — e.g. opening an
un-enriched channel's page (GET /api/channels/{id} lazily enriches About
data) popped a blocking "Server error (500)" modal whenever the fixed-IP
egress proxy was down.

Route all client HTTP through a _send() helper that wraps httpx.HTTPError in
YouTubeError, so every existing 'except YouTubeError' degrades gracefully:
channel detail returns un-enriched (200), explore returns 422 (quiet), and
scheduler jobs log-and-continue instead of crashing.
2026-07-09 09:24:09 +02:00
..
__init__.py feat: M2 (part 1) — subscription import, YouTube client, quota guard 2026-06-11 01:22:07 +02:00
client.py fix(youtube): map httpx transport errors to YouTubeError 2026-07-09 09:24:09 +02:00
rss.py chore: rebrand Subfeed -> Siftlode 2026-06-14 04:40:22 +02:00
search_scrape.py feat(search): zero-quota InnerTube scrape source + search_source toggle 2026-06-29 22:29:54 +02:00
shorts.py fix: address reader-UI feedback (shorts, search, tags, login, UX) 2026-06-11 03:07:49 +02:00