@ -43,6 +43,9 @@ from .senateisvp import SenateISVPIE
from .bliptv import BlipTVIE
from .svt import SVTIE
from .pornhub import PornHubIE
from .xhamster import XHamsterEmbedIE
from .vimeo import VimeoIE
from .dailymotion import DailymotionCloudIE
class GenericIE ( InfoExtractor ) :
@ -333,6 +336,15 @@ class GenericIE(InfoExtractor):
' 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
{
' 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. ' ,
' 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 :
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
matches = re . findall ( r ''' (?x)
@ -1327,6 +1353,11 @@ class GenericIE(InfoExtractor):
if pornhub_url :
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
mobj = re . search (
r ' <iframe[^>]+?src=([ " \' ])(?P<url>(?:https?:)?//cloud \ .tvigle \ .ru/video/.+?) \ 1 ' , webpage )
@ -1494,6 +1525,20 @@ class GenericIE(InfoExtractor):
if senate_isvp_url :
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 ) :
if YoutubeIE . suitable ( vurl ) :
return True