diff options
author | pukkandan <pukkandan.ytdlp@gmail.com> | 2022-08-02 01:43:18 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-02 01:43:18 +0530 |
commit | be5c1ae86202be54225d376756f5d9f0bf8f392a (patch) | |
tree | 9084adbc9200a204db358f8eb46534d8a98056a9 /yt_dlp/extractor/common.py | |
parent | bfd973ece3369c593b5e82a88cc16de80088a73e (diff) | |
download | hypervideo-pre-be5c1ae86202be54225d376756f5d9f0bf8f392a.tar.lz hypervideo-pre-be5c1ae86202be54225d376756f5d9f0bf8f392a.tar.xz hypervideo-pre-be5c1ae86202be54225d376756f5d9f0bf8f392a.zip |
Standardize retry mechanism (#1649)
* [utils] Create `RetryManager`
* Migrate all retries to use the manager
* [extractor] Add wrapper methods for convenience
* Standardize console messages for retries
* Add `--retry-sleep` for extractors
Diffstat (limited to 'yt_dlp/extractor/common.py')
-rw-r--r-- | yt_dlp/extractor/common.py | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/yt_dlp/extractor/common.py b/yt_dlp/extractor/common.py index a6933e738..0ae0f4301 100644 --- a/yt_dlp/extractor/common.py +++ b/yt_dlp/extractor/common.py @@ -32,6 +32,7 @@ from ..utils import ( GeoUtils, LenientJSONDecoder, RegexNotFoundError, + RetryManager, UnsupportedError, age_restricted, base_url, @@ -3848,6 +3849,13 @@ class InfoExtractor: self.to_screen(f'Downloading {playlist_label}{playlist_id} - add --no-playlist to download just the {video_label}{video_id}') return True + def _error_or_warning(self, err, _count=None, _retries=0, *, fatal=True): + RetryManager.report_retry(err, _count or int(fatal), _retries, info=self.to_screen, warn=self.report_warning, + sleep_func=self.get_param('retry_sleep_functions', {}).get('extractor')) + + def RetryManager(self, **kwargs): + return RetryManager(self.get_param('extractor_retries', 3), self._error_or_warning, **kwargs) + @classmethod def extract_from_webpage(cls, ydl, url, webpage): ie = (cls if isinstance(cls._extract_from_webpage, types.MethodType) |