Improve shorts check (shared connection)

This commit is contained in:
BreadTube 2025-09-30 00:27:11 +09:00 committed by Corentin
commit a9e0fd26d7
2 changed files with 4 additions and 3 deletions

View file

@ -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)

View file

@ -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