fix(youtube_api): video search capped at 50

This commit is contained in:
2026-04-14 17:54:43 +01:00
parent 02ba727d05
commit 703a7c435c

View File

@@ -1,5 +1,6 @@
import os import os
import datetime import datetime
import logging
from dotenv import load_dotenv from dotenv import load_dotenv
from googleapiclient.discovery import build from googleapiclient.discovery import build
@@ -9,9 +10,11 @@ from dto.comment import Comment
from server.connectors.base import BaseConnector from server.connectors.base import BaseConnector
load_dotenv() load_dotenv()
API_KEY = os.getenv("YOUTUBE_API_KEY") API_KEY = os.getenv("YOUTUBE_API_KEY")
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
class YouTubeAPI(BaseConnector): class YouTubeAPI(BaseConnector):
source_name: str = "youtube" source_name: str = "youtube"
@@ -77,11 +80,30 @@ class YouTubeAPI(BaseConnector):
return True return True
def _search_videos(self, query, limit): def _search_videos(self, query, limit):
results = []
next_page_token = None
while len(results) < limit:
batch_size = min(50, limit - len(results))
request = self.youtube.search().list( request = self.youtube.search().list(
q=query, part="snippet", type="video", maxResults=limit q=query,
part="snippet",
type="video",
maxResults=batch_size,
pageToken=next_page_token
) )
response = request.execute() response = request.execute()
return response.get("items", []) results.extend(response.get("items", []))
logging.info(f"Fetched {len(results)} out of {limit} videos for query '{query}'")
next_page_token = response.get("nextPageToken")
if not next_page_token:
logging.warning(f"No more pages of results available for query '{query}'")
break
return results[:limit]
def _get_video_comments(self, video_id): def _get_video_comments(self, video_id):
request = self.youtube.commentThreads().list( request = self.youtube.commentThreads().list(