]> jfr.im git - yt-dlp.git/commitdiff
[utils] Add `network_exceptions`
authorpukkandan <redacted>
Tue, 4 May 2021 17:06:18 +0000 (22:36 +0530)
committerpukkandan <redacted>
Tue, 4 May 2021 17:06:18 +0000 (22:36 +0530)
yt_dlp/YoutubeDL.py
yt_dlp/extractor/common.py
yt_dlp/extractor/facebook.py
yt_dlp/utils.py

index 0791cfd9c3be2f6575860cf5191b466b4a9a8adb..9d29afb9a661389408d09704e1947d8dbc425621 100644 (file)
@@ -19,7 +19,6 @@
 import re
 import shutil
 import subprocess
-import socket
 import sys
 import time
 import tokenize
@@ -33,7 +32,6 @@
     compat_basestring,
     compat_cookiejar,
     compat_get_terminal_size,
-    compat_http_client,
     compat_kwargs,
     compat_numeric_types,
     compat_os_name,
@@ -77,6 +75,7 @@
     make_dir,
     make_HTTPS_handler,
     MaxDownloadsReached,
+    network_exceptions,
     orderedSet,
     PagedList,
     parse_filesize,
@@ -2271,7 +2270,7 @@ def dl(name, info, subtitle=False):
                             dl(sub_filename, sub_info.copy(), subtitle=True)
                             sub_info['filepath'] = sub_filename
                             files_to_move[sub_filename] = sub_filename_final
-                        except (ExtractorError, IOError, OSError, ValueError, compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
+                        except tuple([ExtractorError, IOError, OSError, ValueError] + network_exceptions) as err:
                             self.report_warning('Unable to download subtitle for "%s": %s' %
                                                 (sub_lang, error_to_compat_str(err)))
                             continue
@@ -2475,7 +2474,7 @@ def correct_ext(filename):
                 dl_filename = dl_filename or temp_filename
                 info_dict['__finaldir'] = os.path.dirname(os.path.abspath(encodeFilename(full_filename)))
 
-            except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
+            except network_exceptions as err:
                 self.report_error('unable to download video data: %s' % error_to_compat_str(err))
                 return
             except (OSError, IOError) as err:
@@ -3070,7 +3069,7 @@ def _write_thumbnails(self, info_dict, filename):  # return the extensions
                     ret.append(suffix + thumb_ext)
                     self.to_screen('[%s] %s: Writing thumbnail %sto: %s' %
                                    (info_dict['extractor'], info_dict['id'], thumb_display_id, thumb_filename))
-                except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
+                except network_exceptions as err:
                     self.report_warning('Unable to download thumbnail "%s": %s' %
                                         (t['url'], error_to_compat_str(err)))
             if ret and not write_all:
index 642c949301628b4fbd83ac70f617fe632d640c5e..e2a9a3801fe9bddb4670d24dfd05bf61e4034082 100644 (file)
@@ -9,8 +9,6 @@
 import os
 import random
 import re
-import socket
-import ssl
 import sys
 import time
 import math
@@ -58,6 +56,7 @@
     js_to_json,
     JSON_LD_RE,
     mimetype2ext,
+    network_exceptions,
     orderedSet,
     parse_bitrate,
     parse_codecs,
@@ -659,12 +658,9 @@ def _request_webpage(self, url_or_request, video_id, note=None, errnote=None, fa
                 url_or_request = update_url_query(url_or_request, query)
             if data is not None or headers:
                 url_or_request = sanitized_Request(url_or_request, data, headers)
-        exceptions = [compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error]
-        if hasattr(ssl, 'CertificateError'):
-            exceptions.append(ssl.CertificateError)
         try:
             return self._downloader.urlopen(url_or_request)
-        except tuple(exceptions) as err:
+        except network_exceptions as err:
             if isinstance(err, compat_urllib_error.HTTPError):
                 if self.__can_accept_status_code(err, expected_status):
                     # Retain reference to error to prevent file object from
index b68b90bd319c8f7e4b1919678c40b75671266b28..d29b9aab900916b96d8f70890f4418fe3a3077bb 100644 (file)
@@ -3,14 +3,11 @@
 
 import json
 import re
-import socket
 
 from .common import InfoExtractor
 from ..compat import (
     compat_etree_fromstring,
-    compat_http_client,
     compat_str,
-    compat_urllib_error,
     compat_urllib_parse_unquote,
     compat_urllib_parse_unquote_plus,
 )
@@ -23,6 +20,7 @@
     int_or_none,
     js_to_json,
     limit_length,
+    network_exceptions,
     parse_count,
     qualities,
     sanitized_Request,
@@ -370,7 +368,7 @@ def _login(self):
                                                     note='Confirming login')
             if re.search(r'id="checkpointSubmitButton"', check_response) is not None:
                 self.report_warning('Unable to confirm login, you have to login in your browser and authorize the login.')
-        except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
+        except network_exceptions as err:
             self.report_warning('unable to log in: %s' % error_to_compat_str(err))
             return
 
index eb266dda736591a3fafd7e9adc02298e711bda08..08e2d19d27deaac8059dcdf1f07cff3249528a06 100644 (file)
@@ -2361,6 +2361,12 @@ class YoutubeDLError(Exception):
     pass
 
 
+network_exceptions = [compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error]
+if hasattr(ssl, 'CertificateError'):
+    network_exceptions.append(ssl.CertificateError)
+network_exceptions = tuple(network_exceptions)
+
+
 class ExtractorError(YoutubeDLError):
     """Error during info extraction."""
 
@@ -2369,7 +2375,7 @@ def __init__(self, msg, tb=None, expected=False, cause=None, video_id=None):
         If expected is set, this is a normal error message and most likely not a bug in yt-dlp.
         """
 
-        if sys.exc_info()[0] in (compat_urllib_error.URLError, socket.timeout, UnavailableVideoError):
+        if sys.exc_info()[0] in network_exceptions:
             expected = True
         if video_id is not None:
             msg = video_id + ': ' + msg