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. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| calendar.py | ||
| dashboard.py | ||
| detail.py | ||
| discover.py | ||
| enrichment.py | ||
| libraries.py | ||
| library.py | ||
| poster.py | ||
| scan.py | ||
| search.py | ||
| watchlist.py | ||
| wishlist.py | ||
| youtube.py | ||