soulsync/core/automation/handlers
BoulderBadgeDad 7140b88948 youtube channels: per-channel overrides (custom show-name + quality) — core
storage + wiring + API for the channel settings modal (UI next):
- db.get/set_channel_settings(channel_id): per-channel {custom_name, quality}
  in the settings KV store (no schema change); blanks clear the override.
- enqueue applies them: custom_name overrides the $channel folder token; a
  quality override is stashed in the download row's search_ctx. the worker reads
  it back (quality_override_from_download) and uses it instead of the global
  youtube quality profile. global default still applies when no override.
- API GET/POST /youtube/channel/<id>/settings (GET also returns the global
  default quality for the modal's 'using default' hint).

pure helpers (enqueue_ctx, quality_override_from_download) + db + api seam-tested.
2026-06-25 22:53:45 -07:00
..
__init__.py
_pipeline_shared.py Fix organize-by-playlist downloads: library entries, wishlist, and stale Spotify cache 2026-06-03 10:26:32 +02:00
database_update.py
discover_playlist.py
download_cleanup.py
duplicate_cleaner.py
maintenance.py Video automations: Auto-Backup Database (video DB) — custom twin (phase 5) 2026-06-21 23:41:19 -07:00
personalized_pipeline.py
playlist_pipeline.py
process_wishlist.py
progress_callbacks.py
quality_scanner.py Remove old auto-acting Quality Scanner tool (replaced by Quality Upgrade Finder job) 2026-06-13 12:14:45 -07:00
refresh_mirrored.py Playlists: mirror-update trigger prunes removed tracks (the other half) 2026-06-12 15:49:13 -07:00
registration.py video automations: rename Download->Process + group into a clear pipeline 2026-06-25 22:26:31 -07:00
run_script.py
scan_library.py
scan_watchlist.py
search_and_download.py
sync_playlist.py Mirrored playlists: custom name alias (overrides display + sync name, survives upstream refresh) — card rename button like the source-ref editor 2026-06-13 00:23:56 -07:00
video_auto_wishlist_airing.py Lint: silence S110 on two intentional best-effort swallows in video handlers (pre-existing) 2026-06-21 23:35:05 -07:00
video_process_wishlist.py video automations: rename Download->Process + group into a clear pipeline 2026-06-25 22:26:31 -07:00
video_process_youtube_wishlist.py youtube channels: per-channel overrides (custom show-name + quality) — core 2026-06-25 22:53:45 -07:00
video_scan_library.py Lint: silence S110 on two intentional best-effort swallows in video handlers (pre-existing) 2026-06-21 23:35:05 -07:00
video_scan_watchlist_channels.py video automations: watchlist scans for people + channels 2026-06-25 19:07:06 -07:00
video_scan_watchlist_people.py video automations: watchlist scans for people + channels 2026-06-25 19:07:06 -07:00
video_scan_watchlist_playlists.py video automations: rename Download->Process + group into a clear pipeline 2026-06-25 22:26:31 -07:00