Three code paths could fire yt-dlp immediately (polite=False) while a download was already running, causing YouTube to see two simultaneous authenticated sessions and invalidate the cookie: - search.py: live yt-dlp fallback now skipped while any download is active - downloads.py: _ensure_video uses polite=True so it waits for active downloads to finish before fetching metadata for an unknown video - channels.py: follow_by_url uses polite=True when fetching metadata for a brand-new channel Added is_download_active() helper to ytdlp.py to expose the active download state without importing private globals. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
12 KiB
12 KiB