|
|
|
@ -596,6 +596,14 @@ class InfoExtractor(object): |
|
|
|
|
"""Sets the downloader for this IE.""" |
|
|
|
|
self._downloader = downloader |
|
|
|
|
|
|
|
|
|
@property |
|
|
|
|
def cache(self): |
|
|
|
|
return self._downloader.cache |
|
|
|
|
|
|
|
|
|
@property |
|
|
|
|
def cookiejar(self): |
|
|
|
|
return self._downloader.cookiejar |
|
|
|
|
|
|
|
|
|
def _real_initialize(self): |
|
|
|
|
"""Real initialization process. Redefine in subclasses.""" |
|
|
|
|
pass |
|
|
|
@ -942,14 +950,47 @@ class InfoExtractor(object): |
|
|
|
|
else: |
|
|
|
|
self.report_warning(errmsg + str(ve)) |
|
|
|
|
|
|
|
|
|
def report_warning(self, msg, video_id=None): |
|
|
|
|
def __ie_msg(self, *msg): |
|
|
|
|
return '[{0}] {1}'.format(self.IE_NAME, ''.join(msg)) |
|
|
|
|
|
|
|
|
|
# msg, video_id=None, *args, only_once=False, **kwargs |
|
|
|
|
def report_warning(self, msg, *args, **kwargs): |
|
|
|
|
if len(args) > 0: |
|
|
|
|
video_id = args[0] |
|
|
|
|
args = args[1:] |
|
|
|
|
else: |
|
|
|
|
video_id = kwargs.pop('video_id', None) |
|
|
|
|
idstr = '' if video_id is None else '%s: ' % video_id |
|
|
|
|
self._downloader.report_warning( |
|
|
|
|
'[%s] %s%s' % (self.IE_NAME, idstr, msg)) |
|
|
|
|
self.__ie_msg(idstr, msg), *args, **kwargs) |
|
|
|
|
|
|
|
|
|
def to_screen(self, msg): |
|
|
|
|
"""Print msg to screen, prefixing it with '[ie_name]'""" |
|
|
|
|
self._downloader.to_screen('[%s] %s' % (self.IE_NAME, msg)) |
|
|
|
|
self._downloader.to_screen(self.__ie_msg(msg)) |
|
|
|
|
|
|
|
|
|
def write_debug(self, msg, only_once=False, _cache=[]): |
|
|
|
|
'''Log debug message or Print message to stderr''' |
|
|
|
|
if not self.get_param('verbose', False): |
|
|
|
|
return |
|
|
|
|
message = '[debug] ' + self.__ie_msg(msg) |
|
|
|
|
logger = self.get_param('logger') |
|
|
|
|
if logger: |
|
|
|
|
logger.debug(message) |
|
|
|
|
else: |
|
|
|
|
if only_once and hash(message) in _cache: |
|
|
|
|
return |
|
|
|
|
self._downloader.to_stderr(message) |
|
|
|
|
_cache.append(hash(message)) |
|
|
|
|
|
|
|
|
|
# name, default=None, *args, **kwargs |
|
|
|
|
def get_param(self, name, *args, **kwargs): |
|
|
|
|
default, args = (args[0], args[1:]) if len(args) > 0 else (kwargs.pop('default', None), args) |
|
|
|
|
if self._downloader: |
|
|
|
|
return self._downloader.params.get(name, default, *args, **kwargs) |
|
|
|
|
return default |
|
|
|
|
|
|
|
|
|
def report_drm(self, video_id): |
|
|
|
|
self.raise_no_formats('This video is DRM protected', expected=True, video_id=video_id) |
|
|
|
|
|
|
|
|
|
def report_extraction(self, id_or_name): |
|
|
|
|
"""Report information extraction.""" |
|
|
|
@ -977,6 +1018,15 @@ class InfoExtractor(object): |
|
|
|
|
def raise_geo_restricted(msg='This video is not available from your location due to geo restriction', countries=None): |
|
|
|
|
raise GeoRestrictedError(msg, countries=countries) |
|
|
|
|
|
|
|
|
|
def raise_no_formats(self, msg, expected=False, video_id=None): |
|
|
|
|
if expected and ( |
|
|
|
|
self.get_param('ignore_no_formats_error') or self.get_param('wait_for_video')): |
|
|
|
|
self.report_warning(msg, video_id) |
|
|
|
|
elif isinstance(msg, ExtractorError): |
|
|
|
|
raise msg |
|
|
|
|
else: |
|
|
|
|
raise ExtractorError(msg, expected=expected, video_id=video_id) |
|
|
|
|
|
|
|
|
|
# Methods for following #608 |
|
|
|
|
@staticmethod |
|
|
|
|
def url_result(url, ie=None, video_id=None, video_title=None): |
|
|
|
|