Manage proxies

This commit is contained in:
Antonio J. Delgado 2024-12-29 17:36:53 +02:00
parent ab1bc5af92
commit 70e8f9c048

View file

@ -76,6 +76,20 @@ class GetYoutubeVideos:
)
)
def _change_proxy(self, video_id):
if len(self.config['proxy']) > 0:
if self.proxy_index<len(self.config['proxy']):
self._log.warning(
"Got an error fetching video information. Setting proxy to '%s'...",
self.selected_proxy
)
self.selected_proxy = self.config['proxy'][self.proxy_index]
self.proxy_index += 1
return self._get_video_info(video_id)
self.proxy_index = 0
self.selected_proxy = ''
return None
def _get_video_info(self, video_id):
uri=f"https://www.youtube.com/watch?v={video_id}"
ydl_opts = {
@ -88,31 +102,35 @@ class GetYoutubeVideos:
try:
raw_video_info = ydl.extract_info(uri, download=False)
except yt_dlp.utils.DownloadError as error:
self._log.debug(
"Skipping video. Error: %s",
error
)
if 'The uploader has not made this video available in your country' in f"{error}":
self.summary['videos_with_error'] += 1
result = self._change_proxy(video_id)
if not result:
return None
return result
elif 'HTTP Error 403: Forbidden' in f"{error}":
self.summary['videos_with_error'] += 1
self.summary['possible_proxy_errors'] += 1
if len(self.config['proxy']) > 0:
if self.proxy_index<len(self.config['proxy']):
self.selected_proxy = self.config['proxy'][self.proxy_index]
self.proxy_index += 1
return self._get_video_info(video_id)
self.proxy_index = 0
self.selected_proxy = ''
result = self._change_proxy(video_id)
if not result:
return None
return result
elif 'not a bot' in f"{error}":
self.summary['videos_with_error'] += 1
self.summary['possible_ban_errors'] += 1
# elif age_limit_errors?
result = self._change_proxy(video_id)
if not result:
return None
return result
elif 'This live event will begin in a few moments' in f"{error}":
self.summary['skipped_videos'] += 1
else:
self.summary['skipped_videos'] += 1
self._log.debug(
"Skipping video. Error: %s",
error
)
return None
video_info = ydl.sanitize_info(raw_video_info)
return video_info