From b6a47249d0a2bb4fd49de86808ad49dbaf32a4e6 Mon Sep 17 00:00:00 2001 From: Mattias Thall Date: Wed, 27 May 2026 01:27:36 +0200 Subject: [PATCH] Fix search latency: bypass rate limiter for user-triggered searches search_youtube now takes polite=False (default) for instant user searches and polite=True for background discovery crawls. Co-Authored-By: Claude Sonnet 4.6 --- backend/services/discovery.py | 2 +- backend/services/ytdlp.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/backend/services/discovery.py b/backend/services/discovery.py index 36de4a2..bb78f91 100644 --- a/backend/services/discovery.py +++ b/backend/services/discovery.py @@ -107,7 +107,7 @@ def _search_and_store( for query in queries: try: - results = ytdlp.search_youtube(query, max_results=40) + results = ytdlp.search_youtube(query, max_results=40, polite=True) except Exception: results = [] for video in results: diff --git a/backend/services/ytdlp.py b/backend/services/ytdlp.py index 259eec3..1792f41 100644 --- a/backend/services/ytdlp.py +++ b/backend/services/ytdlp.py @@ -152,9 +152,10 @@ def _normalize_channel(info: dict) -> dict: } -def search_youtube(query: str, max_results: int = 40) -> list[dict]: +def search_youtube(query: str, max_results: int = 40, polite: bool = False) -> list[dict]: """Search YouTube via yt-dlp. Uses --flat-playlist for fast results.""" - stdout, _, code = _meta_run([ + runner = _meta_run if polite else _run + stdout, _, code = runner([ "yt-dlp", f"ytsearch{max_results}:{query}", "--dump-json",