diff options
Diffstat (limited to 'youtube_dl/extractor/generic.py')
| -rw-r--r-- | youtube_dl/extractor/generic.py | 69 | 
1 files changed, 57 insertions, 12 deletions
| diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index f6b984300..5c03fddc6 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -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 | 
