soulsync/api
BoulderBadgeDad 30dc587ebf Background date enricher for followed YouTube channels (no key)
Follow a channel → a background job fetches its FULL upload-date catalog so the
channel page's year-seasons populate fully, cached permanently (one-time per
channel, instant after).

- core/video/youtube.py: proxy_channel_dates() — no-key BULK dates via Piped/
  Invidious instances (tries several, paginates); parse_proxy_dates handles both
  shapes. The clean path the user wanted.
- core/video/youtube_enrichment.py: YoutubeDateEnricher daemon — enqueue(channel)
  → proxy bulk → cache; per-video yt-dlp only as a throttled fallback (cap 60,
  0.4s) for wished videos when every proxy is down. Skips channels enriched in
  the last 24h.
- db: youtube_channel_enrichment table + mark/check + wishlisted_video_ids_for_
  channel. Enqueued from /youtube/follow and on opening a followed channel.

Scoped to FOLLOWED channels only (per request). 174 tests green; enricher imports
nothing from music.
2026-06-17 10:52:24 -07:00
..
video Background date enricher for followed YouTube channels (no key) 2026-06-17 10:52:24 -07:00
__init__.py fix: add periodic cleanup timer for api/request in-memory store 2026-04-19 15:22:25 -07:00
auth.py fix: throttle auth last_used_at config writes 2026-04-19 15:22:24 -07:00
cache.py enrich SoulSync API and update the DOCS 2026-03-04 13:42:47 -08:00
discover.py enrich SoulSync API and update the DOCS 2026-03-04 13:42:47 -08:00
downloads.py diag: log every cancel_download caller with a trigger label 2026-05-19 22:31:29 -07:00
helpers.py Enrich the SoulSync API 2026-03-04 13:19:39 -08:00
library.py fix: eliminate double-query in track search 2026-04-19 15:22:24 -07:00
listenbrainz.py Full automation engine expansion with scheduling, triggers, actions, and UI polish 2026-03-05 15:13:32 -08:00
playlists.py Fix ruff F541 and B007 lint errors 2026-04-21 11:18:40 -07:00
profiles.py enrich SoulSync API and update the DOCS 2026-03-04 13:42:47 -08:00
request.py Cin-6: Rename soulseek_client global → download_orchestrator 2026-05-04 23:23:32 -07:00
retag.py enrich SoulSync API and update the DOCS 2026-03-04 13:42:47 -08:00
search.py Add module logger + surface silent exceptions in 7 logger-less files — 12 sites 2026-05-07 10:27:04 -07:00
serializers.py Add MusicBrainz as a metadata source 2026-05-18 18:47:13 -07:00
settings.py Encrypt sensitive config values at rest with Fernet — transparent migration, zero breaking changes 2026-03-12 09:25:25 -07:00
system.py Add module logger + surface silent exceptions in 7 logger-less files — 12 sites 2026-05-07 10:27:04 -07:00
watchlist.py Enrich the SoulSync API 2026-03-04 13:19:39 -08:00
wishlist.py Make wishlist respect configured providers 2026-04-30 07:41:22 +03:00