import traceback
import xml.etree.ElementTree
import zlib
-import urlparse
from .common import InfoExtractor, SearchInfoExtractor
from .subtitles import SubtitlesInfoExtractor
compat_urllib_error,
compat_urllib_parse,
compat_urllib_request,
+ compat_urlparse,
compat_str,
clean_html,
self._downloader.report_warning(u'unable to extract uploader nickname')
# title
- if 'title' not in video_info:
- raise ExtractorError(u'Unable to extract video title')
- video_title = compat_urllib_parse.unquote_plus(video_info['title'][0])
+ if 'title' in video_info:
+ video_title = compat_urllib_parse.unquote_plus(video_info['title'][0])
+ else:
+ self._downloader.report_warning(u'Unable to extract video title')
+ video_title = u'_'
# thumbnail image
# We try first to get a high quality image:
args = info['args']
# Easy way to know if the 's' value is in url_encoded_fmt_stream_map
# this signatures are encrypted
+ if 'url_encoded_fmt_stream_map' not in args:
+ raise ValueError(u'No stream_map present') # caught below
m_s = re.search(r'[&,]s=', args['url_encoded_fmt_stream_map'])
if m_s is not None:
self.to_screen(u'%s: Encrypted signatures detected.' % video_id)
playlist_id = mobj.group(1) or mobj.group(2)
# Check if it's a video-specific URL
- query_dict = urlparse.parse_qs(urlparse.urlparse(url).query)
+ query_dict = compat_urlparse.parse_qs(compat_urlparse.urlparse(url).query)
if 'v' in query_dict:
video_id = query_dict['v'][0]
if self._downloader.params.get('noplaylist'):