'uploader': 'Spi0n',
},
'add_ie': ['Dailymotion'],
+ },
+ # YouTube embed via <data-embed-url="">
+ {
+ 'url': 'https://play.google.com/store/apps/details?id=com.gameloft.android.ANMP.GloftA8HM',
+ 'md5': 'c267b1ab6d736057d64babaa37e07a66',
+ 'info_dict': {
+ 'id': 'Ybd-qmqYYpA',
+ 'ext': 'mp4',
+ 'title': 'Asphalt 8: Airborne - Chinese Great Wall - Android Game Trailer',
+ 'uploader': 'gameloftandroid',
+ 'uploader_id': 'gameloftandroid',
+ 'upload_date': '20140321',
+ 'description': 'md5:9c6dca5dd75b7131ce482ccf080749d6'
+ }
}
]
if url.startswith('//'):
return {
'_type': 'url',
- 'url': (
- 'http:'
- if self._downloader.params.get('prefer_insecure', False)
- else 'https:') + url,
+ 'url': self.http_scheme() + url,
}
parsed_url = compat_urlparse.urlparse(url)
# Look for embedded YouTube player
matches = re.findall(r'''(?x)
- (?:<iframe[^>]+?src=|embedSWF\(\s*)
+ (?:<iframe[^>]+?src=|data-video-url=|embedSWF\(\s*)
(["\'])(?P<url>(?:https?:)?//(?:www\.)?youtube\.com/
(?:embed|v)/.+?)
\1''', webpage)
if matches:
urlrs = [self.url_result(unescapeHTML(tuppl[1]), 'Youtube')
for tuppl in matches]
+ # First, ensure we have a duplicate free list of entries
+ seen = set()
+ new_list = []
+ theurl = tuple(url.items())
+ if theurl not in seen:
+ seen.add(theurl)
+ new_list.append(url)
+ urlrs = new_list
return self.playlist_result(
urlrs, playlist_id=video_id, playlist_title=video_title)
if matches:
urlrs = [self.url_result(unescapeHTML(tuppl[1]))
for tuppl in matches]
+ # First, ensure we have a duplicate free list of entries
+ seen = set()
+ new_list = []
+ theurl = tuple(url.items())
+ if theurl not in seen:
+ seen.add(theurl)
+ new_list.append(url)
+ urlrs = new_list
return self.playlist_result(
urlrs, playlist_id=video_id, playlist_title=video_title)
# Look for embedded NovaMov-based player
mobj = re.search(
- r'''(?x)<iframe[^>]+?src=(["\'])
+ r'''(?x)<(?:pagespeed_)?iframe[^>]+?src=(["\'])
(?P<url>http://(?:(?:embed|www)\.)?
(?:novamov\.com|
nowvideo\.(?:ch|sx|eu|at|ag|co)|
if matches:
urlrs = [self.url_result(unescapeHTML(eurl), 'FunnyOrDie')
for eurl in matches]
+ # First, ensure we have a duplicate free list of entries
+ seen = set()
+ new_list = []
+ theurl = tuple(url.items())
+ if theurl not in seen:
+ seen.add(theurl)
+ new_list.append(url)
+ urlrs = new_list
return self.playlist_result(
urlrs, playlist_id=video_id, playlist_title=video_title)
if smotri_url:
return self.url_result(smotri_url, 'Smotri')
+ # Look for embeded soundcloud player
+ mobj = re.search(
+ r'<iframe src="(?P<url>https?://(?:w\.)?soundcloud\.com/player[^"]+)"',
+ webpage)
+ if mobj is not None:
+ url = unescapeHTML(mobj.group('url'))
+ return self.url_result(url)
+
# Start with something easy: JW Player in SWFObject
found = re.findall(r'flashvars: [\'"](?:.*&)?file=(http[^\'"&]*)', webpage)
if not found:
# HTML5 video
found = re.findall(r'(?s)<video[^<]*(?:>.*?<source.*?)? src="([^"]+)"', webpage)
if not found:
- found = re.findall(
+ found = re.search(
r'(?i)<meta\s+(?=(?:[a-z-]+="[^"]+"\s+)*http-equiv="refresh")'
r'(?:[a-z-]+="[^"]+"\s+)*?content="[0-9]{,2};url=\'([^\']+)\'"',
webpage)