|
@@ -43,6 +43,9 @@ from .senateisvp import SenateISVPIE
|
|
from .bliptv import BlipTVIE
|
|
from .bliptv import BlipTVIE
|
|
from .svt import SVTIE
|
|
from .svt import SVTIE
|
|
from .pornhub import PornHubIE
|
|
from .pornhub import PornHubIE
|
|
|
|
+from .xhamster import XHamsterEmbedIE
|
|
|
|
+from .vimeo import VimeoIE
|
|
|
|
+from .dailymotion import DailymotionCloudIE
|
|
|
|
|
|
|
|
|
|
class GenericIE(InfoExtractor):
|
|
class GenericIE(InfoExtractor):
|
|
@@ -333,6 +336,15 @@ class GenericIE(InfoExtractor):
|
|
'skip_download': True,
|
|
'skip_download': True,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
|
|
+ # XHamster embed
|
|
|
|
+ {
|
|
|
|
+ 'url': 'http://www.numisc.com/forum/showthread.php?11696-FM15-which-pumiscer-was-this-%28-vid-%29-%28-alfa-as-fuck-srx-%29&s=711f5db534502e22260dec8c5e2d66d8',
|
|
|
|
+ 'info_dict': {
|
|
|
|
+ 'id': 'showthread',
|
|
|
|
+ 'title': '[NSFL] [FM15] which pumiscer was this ( vid ) ( alfa as fuck srx )',
|
|
|
|
+ },
|
|
|
|
+ 'playlist_mincount': 7,
|
|
|
|
+ },
|
|
# Embedded TED video
|
|
# Embedded TED video
|
|
{
|
|
{
|
|
'url': 'http://en.support.wordpress.com/videos/ted-talks/',
|
|
'url': 'http://en.support.wordpress.com/videos/ted-talks/',
|
|
@@ -812,6 +824,29 @@ class GenericIE(InfoExtractor):
|
|
'description': 'To understand why he was the Toronto Blue Jays’ top off-season priority is to appreciate his background and upbringing in Montreal, where he first developed his baseball skills. Written and narrated by Stephen Brunt.',
|
|
'description': 'To understand why he was the Toronto Blue Jays’ top off-season priority is to appreciate his background and upbringing in Montreal, where he first developed his baseball skills. Written and narrated by Stephen Brunt.',
|
|
'uploader': 'Rogers Sportsnet',
|
|
'uploader': 'Rogers Sportsnet',
|
|
},
|
|
},
|
|
|
|
+ },
|
|
|
|
+ # Dailymotion Cloud video
|
|
|
|
+ {
|
|
|
|
+ 'url': 'http://replay.publicsenat.fr/vod/le-debat/florent-kolandjian,dominique-cena,axel-decourtye,laurence-abeille,bruno-parmentier/175910',
|
|
|
|
+ 'md5': '49444254273501a64675a7e68c502681',
|
|
|
|
+ 'info_dict': {
|
|
|
|
+ 'id': '5585de919473990de4bee11b',
|
|
|
|
+ 'ext': 'mp4',
|
|
|
|
+ 'title': 'Le débat',
|
|
|
|
+ 'thumbnail': 're:^https?://.*\.jpe?g$',
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ # AdobeTVVideo embed
|
|
|
|
+ {
|
|
|
|
+ 'url': 'https://helpx.adobe.com/acrobat/how-to/new-experience-acrobat-dc.html?set=acrobat--get-started--essential-beginners',
|
|
|
|
+ 'md5': '43662b577c018ad707a63766462b1e87',
|
|
|
|
+ 'info_dict': {
|
|
|
|
+ 'id': '2456',
|
|
|
|
+ 'ext': 'mp4',
|
|
|
|
+ 'title': 'New experience with Acrobat DC',
|
|
|
|
+ 'description': 'New experience with Acrobat DC',
|
|
|
|
+ 'duration': 248.667,
|
|
|
|
+ },
|
|
}
|
|
}
|
|
]
|
|
]
|
|
|
|
|
|
@@ -1089,18 +1124,9 @@ class GenericIE(InfoExtractor):
|
|
if matches:
|
|
if matches:
|
|
return _playlist_from_matches(matches, ie='RtlNl')
|
|
return _playlist_from_matches(matches, ie='RtlNl')
|
|
|
|
|
|
- # Look for embedded (iframe) Vimeo player
|
|
|
|
- mobj = re.search(
|
|
|
|
- r'<iframe[^>]+?src=(["\'])(?P<url>(?:https?:)?//player\.vimeo\.com/video/.+?)\1', webpage)
|
|
|
|
- if mobj:
|
|
|
|
- player_url = unescapeHTML(mobj.group('url'))
|
|
|
|
- surl = smuggle_url(player_url, {'Referer': url})
|
|
|
|
- return self.url_result(surl)
|
|
|
|
- # Look for embedded (swf embed) Vimeo player
|
|
|
|
- mobj = re.search(
|
|
|
|
- r'<embed[^>]+?src="((?:https?:)?//(?:www\.)?vimeo\.com/moogaloop\.swf.+?)"', webpage)
|
|
|
|
- if mobj:
|
|
|
|
- return self.url_result(mobj.group(1))
|
|
|
|
|
|
+ vimeo_url = VimeoIE._extract_vimeo_url(url, webpage)
|
|
|
|
+ if vimeo_url is not None:
|
|
|
|
+ return self.url_result(vimeo_url)
|
|
|
|
|
|
# Look for embedded YouTube player
|
|
# Look for embedded YouTube player
|
|
matches = re.findall(r'''(?x)
|
|
matches = re.findall(r'''(?x)
|
|
@@ -1327,6 +1353,11 @@ class GenericIE(InfoExtractor):
|
|
if pornhub_url:
|
|
if pornhub_url:
|
|
return self.url_result(pornhub_url, 'PornHub')
|
|
return self.url_result(pornhub_url, 'PornHub')
|
|
|
|
|
|
|
|
+ # Look for embedded XHamster player
|
|
|
|
+ xhamster_urls = XHamsterEmbedIE._extract_urls(webpage)
|
|
|
|
+ if xhamster_urls:
|
|
|
|
+ return _playlist_from_matches(xhamster_urls, ie='XHamsterEmbed')
|
|
|
|
+
|
|
# Look for embedded Tvigle player
|
|
# Look for embedded Tvigle player
|
|
mobj = re.search(
|
|
mobj = re.search(
|
|
r'<iframe[^>]+?src=(["\'])(?P<url>(?:https?:)?//cloud\.tvigle\.ru/video/.+?)\1', webpage)
|
|
r'<iframe[^>]+?src=(["\'])(?P<url>(?:https?:)?//cloud\.tvigle\.ru/video/.+?)\1', webpage)
|
|
@@ -1494,6 +1525,20 @@ class GenericIE(InfoExtractor):
|
|
if senate_isvp_url:
|
|
if senate_isvp_url:
|
|
return self.url_result(senate_isvp_url, 'SenateISVP')
|
|
return self.url_result(senate_isvp_url, 'SenateISVP')
|
|
|
|
|
|
|
|
+ # Look for Dailymotion Cloud videos
|
|
|
|
+ dmcloud_url = DailymotionCloudIE._extract_dmcloud_url(webpage)
|
|
|
|
+ if dmcloud_url:
|
|
|
|
+ return self.url_result(dmcloud_url, 'DailymotionCloud')
|
|
|
|
+
|
|
|
|
+ # Look for AdobeTVVideo embeds
|
|
|
|
+ mobj = re.search(
|
|
|
|
+ r'<iframe[^>]+src=[\'"]((?:https?:)?//video\.tv\.adobe\.com/v/\d+[^"]+)[\'"]',
|
|
|
|
+ webpage)
|
|
|
|
+ if mobj is not None:
|
|
|
|
+ return self.url_result(
|
|
|
|
+ self._proto_relative_url(unescapeHTML(mobj.group(1))),
|
|
|
|
+ 'AdobeTVVideo')
|
|
|
|
+
|
|
def check_video(vurl):
|
|
def check_video(vurl):
|
|
if YoutubeIE.suitable(vurl):
|
|
if YoutubeIE.suitable(vurl):
|
|
return True
|
|
return True
|