Improve shorts check (shared connection)
This commit is contained in:
parent
ef14b1cc07
commit
a9e0fd26d7
2 changed files with 4 additions and 3 deletions
|
|
@ -4,6 +4,7 @@ from enum import Enum
|
||||||
import logging
|
import logging
|
||||||
import operator
|
import operator
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
import http.client
|
||||||
import re
|
import re
|
||||||
import time
|
import time
|
||||||
import tomllib
|
import tomllib
|
||||||
|
|
@ -315,11 +316,12 @@ class Bot:
|
||||||
max_results=self.SUBS_LIST_SHORTS_RATIO * self.config.youtube_channel_video_count,
|
max_results=self.SUBS_LIST_SHORTS_RATIO * self.config.youtube_channel_video_count,
|
||||||
request_timeout=self.config.request_timeout)
|
request_timeout=self.config.request_timeout)
|
||||||
video_ids = {v.id.videoId for v in subscription.shorts_list + subscription.video_list}
|
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:
|
for yt_info in yt_video_info.items:
|
||||||
if yt_info.id.videoId in video_ids:
|
if yt_info.id.videoId in video_ids:
|
||||||
continue
|
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)
|
subscription.shorts_list.append(yt_info)
|
||||||
else:
|
else:
|
||||||
subscription.video_list.append(yt_info)
|
subscription.video_list.append(yt_info)
|
||||||
|
|
|
||||||
|
|
@ -58,9 +58,8 @@ class YoutubeManager:
|
||||||
except TimeoutError as error:
|
except TimeoutError as error:
|
||||||
raise RuntimeError(f'Timeout calling YT API ({url}): {error}') from 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:
|
try:
|
||||||
connection = http.client.HTTPSConnection('www.youtube.com', timeout=request_timeout)
|
|
||||||
connection.request('GET', f'/shorts/{video_id}')
|
connection.request('GET', f'/shorts/{video_id}')
|
||||||
response = connection.getresponse()
|
response = connection.getresponse()
|
||||||
return response.status != self.SHORTS_CHECK_STATUS
|
return response.status != self.SHORTS_CHECK_STATUS
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue