mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[postprocessor,cleanup] Create _download_json
				
					
				
			This commit is contained in:
		| @@ -1,12 +1,9 @@ | ||||
| from hashlib import sha256 | ||||
| import itertools | ||||
| import json | ||||
| import re | ||||
| import time | ||||
|  | ||||
| from .ffmpeg import FFmpegPostProcessor | ||||
| from ..compat import compat_urllib_parse_urlencode, compat_HTTPError | ||||
| from ..utils import PostProcessingError, network_exceptions, sanitized_Request | ||||
| from ..compat import compat_urllib_parse_urlencode | ||||
|  | ||||
|  | ||||
| class SponsorBlockPP(FFmpegPostProcessor): | ||||
| @@ -94,28 +91,7 @@ class SponsorBlockPP(FFmpegPostProcessor): | ||||
|             'categories': json.dumps(self._categories), | ||||
|             'actionTypes': json.dumps(['skip', 'poi']) | ||||
|         }) | ||||
|         self.write_debug(f'SponsorBlock query: {url}') | ||||
|         for d in self._get_json(url): | ||||
|         for d in self._download_json(url) or []: | ||||
|             if d['videoID'] == video_id: | ||||
|                 return d['segments'] | ||||
|         return [] | ||||
|  | ||||
|     def _get_json(self, url): | ||||
|         # While this is not an extractor, it behaves similar to one and | ||||
|         # so obey extractor_retries and sleep_interval_requests | ||||
|         max_retries = self.get_param('extractor_retries', 3) | ||||
|         sleep_interval = self.get_param('sleep_interval_requests') or 0 | ||||
|         for retries in itertools.count(): | ||||
|             try: | ||||
|                 rsp = self._downloader.urlopen(sanitized_Request(url)) | ||||
|                 return json.loads(rsp.read().decode(rsp.info().get_param('charset') or 'utf-8')) | ||||
|             except network_exceptions as e: | ||||
|                 if isinstance(e, compat_HTTPError) and e.code == 404: | ||||
|                     return [] | ||||
|                 if retries < max_retries: | ||||
|                     self.report_warning(f'{e}. Retrying...') | ||||
|                     if sleep_interval > 0: | ||||
|                         self.to_screen(f'Sleeping {sleep_interval} seconds ...') | ||||
|                         time.sleep(sleep_interval) | ||||
|                     continue | ||||
|                 raise PostProcessingError(f'Unable to communicate with SponsorBlock API: {e}') | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 pukkandan
					pukkandan