'requested_formats': formats_info,
'format': rf,
'format_id': rf,
- 'ext': formats_info[0]['ext'],
'width': formats_info[0].get('width'),
'height': formats_info[0].get('height'),
'resolution': formats_info[0].get('resolution'),
playlist.append({
'_type': 'video',
'id': video_id,
- 'title': title,
'formats': formats,
'title': title,
'duration': duration,
item, './{http://developer.longtailvideo.com/trac/}date')
upload_date = unified_strdate(date_str, day_first=False)
# duration is present but wrong
- formats = []
- formats.append({
- 'format_id': 'main',
- 'url': item.find(
- './{http://search.yahoo.com/mrss/}content').attrib['url'],
- })
+ formats = [{'format_id': 'main', 'url': item.find('./{http://search.yahoo.com/mrss/}content').attrib['url']}]
backup_url = xpath_text(
item, './{http://developer.longtailvideo.com/trac/}backupContent')
if backup_url:
found = filter_video(re.findall(r'''(?xs)
flowplayer\("[^"]+",\s*
\{[^}]+?\}\s*,
- \s*{[^}]+? ["']?clip["']?\s*:\s*\{\s*
+ \s*\{[^}]+? ["']?clip["']?\s*:\s*\{\s*
["']?url["']?\s*:\s*["']([^"']+)["']
''', webpage))
if not found:
return compat_urlparse.urlunparse((uri.scheme, uri.netloc, obj['attrs']['data'], None, None, None))
def _transform_bootstrap(self, js):
- return re.split('(?m)^\s*try\s*{', js)[0] \
+ return re.split('(?m)^\s*try\s*\{', js)[0] \
.split(' = ', 1)[1].strip().rstrip(';')
def _transform_meta(self, js):
# swf player
{
'url': 'http://pics.smotri.com/scrubber_custom8.swf?file=v9188090500',
- 'md5': '4d47034979d9390d14acdf59c4935bc2',
+ 'md5': '31099eeb4bc906712c5f40092045108d',
'info_dict': {
'id': 'v9188090500',
'ext': 'mp4',
def _search_meta(self, name, html, display_name=None):
if display_name is None:
display_name = name
- return self._html_search_regex(
- r'<meta itemprop="%s" content="([^"]+)" />' % re.escape(name),
- html, display_name, fatal=False)
return self._html_search_meta(name, html, display_name)
def _real_extract(self, url):