diff options
| -rw-r--r-- | youtube_dl/extractor/dailymotion.py | 7 | ||||
| -rw-r--r-- | youtube_dl/extractor/francetv.py | 28 | ||||
| -rw-r--r-- | youtube_dl/extractor/generic.py | 12 | 
3 files changed, 39 insertions, 8 deletions
| diff --git a/youtube_dl/extractor/dailymotion.py b/youtube_dl/extractor/dailymotion.py index 15bfc59b2..1f92823b7 100644 --- a/youtube_dl/extractor/dailymotion.py +++ b/youtube_dl/extractor/dailymotion.py @@ -112,6 +112,13 @@ class DailymotionIE(DailymotionBaseInfoExtractor):          }      ] +    @staticmethod +    def _extract_urls(webpage): +        # Look for embedded Dailymotion player +        matches = re.findall( +            r'<(?:(?:embed|iframe)[^>]+?src=|input[^>]+id=[\'"]dmcloudUrlEmissionSelect[\'"][^>]+value=)(["\'])(?P<url>(?:https?:)?//(?:www\.)?dailymotion\.com/(?:embed|swf)/video/.+?)\1', webpage) +        return list(map(lambda m: unescapeHTML(m[1]), matches)) +      def _real_extract(self, url):          video_id = self._match_id(url) diff --git a/youtube_dl/extractor/francetv.py b/youtube_dl/extractor/francetv.py index ad94e31f3..7653975e3 100644 --- a/youtube_dl/extractor/francetv.py +++ b/youtube_dl/extractor/francetv.py @@ -14,7 +14,10 @@ from ..utils import (      parse_duration,      determine_ext,  ) -from .dailymotion import DailymotionCloudIE +from .dailymotion import ( +    DailymotionIE, +    DailymotionCloudIE, +)  class FranceTVBaseInfoExtractor(InfoExtractor): @@ -188,6 +191,21 @@ class FranceTvInfoIE(FranceTVBaseInfoExtractor):          'params': {              'skip_download': True,          }, +    }, { +        # Dailymotion embed +        'url': 'http://www.francetvinfo.fr/politique/notre-dame-des-landes/video-sur-france-inter-cecile-duflot-denonce-le-regard-meprisant-de-patrick-cohen_1520091.html', +        'md5': 'ee7f1828f25a648addc90cb2687b1f12', +        'info_dict': { +            'id': 'x4iiko0', +            'ext': 'mp4', +            'title': 'NDDL, référendum, Brexit : Cécile Duflot répond à Patrick Cohen', +            'description': 'Au lendemain de la victoire du "oui" au référendum sur l\'aéroport de Notre-Dame-des-Landes, l\'ancienne ministre écologiste est l\'invitée de Patrick Cohen. Plus d\'info : https://www.franceinter.fr/emissions/le-7-9/le-7-9-27-juin-2016', +            'timestamp': 1467011958, +            'upload_date': '20160627', +            'uploader': 'France Inter', +            'uploader_id': 'x2q2ez', +        }, +        'add_ie': ['Dailymotion'],      }]      def _real_extract(self, url): @@ -197,7 +215,13 @@ class FranceTvInfoIE(FranceTVBaseInfoExtractor):          dmcloud_url = DailymotionCloudIE._extract_dmcloud_url(webpage)          if dmcloud_url: -            return self.url_result(dmcloud_url, 'DailymotionCloud') +            return self.url_result(dmcloud_url, DailymotionCloudIE.ie_key()) + +        dailymotion_urls = DailymotionIE._extract_urls(webpage) +        if dailymotion_urls: +            return self.playlist_result([ +                self.url_result(dailymotion_url, DailymotionIE.ie_key()) +                for dailymotion_url in dailymotion_urls])          video_id, catalogue = self._search_regex(              (r'id-video=([^@]+@[^"]+)', diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index 764697bd2..31527d1c6 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -49,7 +49,10 @@ from .pornhub import PornHubIE  from .xhamster import XHamsterEmbedIE  from .tnaflix import TNAFlixNetworkEmbedIE  from .vimeo import VimeoIE -from .dailymotion import DailymotionCloudIE +from .dailymotion import ( +    DailymotionIE, +    DailymotionCloudIE, +)  from .onionstudios import OnionStudiosIE  from .viewlift import ViewLiftEmbedIE  from .screenwavemedia import ScreenwaveMediaIE @@ -1673,12 +1676,9 @@ class GenericIE(InfoExtractor):          if matches:              return _playlist_from_matches(matches, lambda m: m[-1]) -        # Look for embedded Dailymotion player -        matches = re.findall( -            r'<(?:(?:embed|iframe)[^>]+?src=|input[^>]+id=[\'"]dmcloudUrlEmissionSelect[\'"][^>]+value=)(["\'])(?P<url>(?:https?:)?//(?:www\.)?dailymotion\.com/(?:embed|swf)/video/.+?)\1', webpage) +        matches = DailymotionIE._extract_urls(webpage)          if matches: -            return _playlist_from_matches( -                matches, lambda m: unescapeHTML(m[1])) +            return _playlist_from_matches(matches)          # Look for embedded Dailymotion playlist player (#3822)          m = re.search( | 
