From a9e0fd26d760be43a3c25c8d869f36d2899dee6d Mon Sep 17 00:00:00 2001 From: BreadTube Date: Tue, 30 Sep 2025 00:27:11 +0900 Subject: [PATCH] Improve shorts check (shared connection) --- breadtube_bot/bot.py | 4 +++- breadtube_bot/youtube_manager.py | 3 +-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/breadtube_bot/bot.py b/breadtube_bot/bot.py index b5d9276..782c2d0 100644 --- a/breadtube_bot/bot.py +++ b/breadtube_bot/bot.py @@ -4,6 +4,7 @@ from enum import Enum import logging import operator from pathlib import Path +import http.client import re import time import tomllib @@ -315,11 +316,12 @@ class Bot: max_results=self.SUBS_LIST_SHORTS_RATIO * self.config.youtube_channel_video_count, request_timeout=self.config.request_timeout) video_ids = {v.id.videoId for v in subscription.shorts_list + subscription.video_list} + yt_connection = http.client.HTTPSConnection('www.youtube.com', timeout=self.config.request_timeout) for yt_info in yt_video_info.items: if yt_info.id.videoId in video_ids: continue - if self.yt_manager.is_shorts(yt_info.id.videoId, request_timeout=self.config.request_timeout): + if self.yt_manager.is_shorts(yt_connection, yt_info.id.videoId): subscription.shorts_list.append(yt_info) else: subscription.video_list.append(yt_info) diff --git a/breadtube_bot/youtube_manager.py b/breadtube_bot/youtube_manager.py index f715bc9..ced48a3 100644 --- a/breadtube_bot/youtube_manager.py +++ b/breadtube_bot/youtube_manager.py @@ -58,9 +58,8 @@ class YoutubeManager: except TimeoutError as error: raise RuntimeError(f'Timeout calling YT API ({url}): {error}') from error - def is_shorts(self, video_id: str, request_timeout: float) -> bool: + def is_shorts(self, connection: http.client.HTTPConnection, video_id: str) -> bool: try: - connection = http.client.HTTPSConnection('www.youtube.com', timeout=request_timeout) connection.request('GET', f'/shorts/{video_id}') response = connection.getresponse() return response.status != self.SHORTS_CHECK_STATUS