@ -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