diff options
| author | Philipp Hagemeister <phihag@phihag.de> | 2013-12-05 22:30:04 +0100 | 
|---|---|---|
| committer | Philipp Hagemeister <phihag@phihag.de> | 2013-12-05 22:30:04 +0100 | 
| commit | 72135030d1235f608a2b5e0ec007ca8e6e19e3b4 (patch) | |
| tree | 4520c4c0bef2e0daa862d08cb1c6896f258cf0e4 | |
| parent | 19e3dfc9f8444a1341a6e71752a3235a0447a565 (diff) | |
| parent | 3514813d5b021c5595b212ba3b1801175840c5c0 (diff) | |
Merge remote-tracking branch 'origin/master'
| -rw-r--r-- | youtube_dl/extractor/__init__.py | 2 | ||||
| -rw-r--r-- | youtube_dl/extractor/francetv.py | 104 | 
2 files changed, 86 insertions, 20 deletions
| diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py index 2e1a8be14..a78dcad7f 100644 --- a/youtube_dl/extractor/__init__.py +++ b/youtube_dl/extractor/__init__.py @@ -56,7 +56,7 @@ from .flickr import FlickrIE  from .francetv import (      PluzzIE,      FranceTvInfoIE, -    France2IE, +    FranceTVIE,      GenerationQuoiIE  )  from .freesound import FreesoundIE diff --git a/youtube_dl/extractor/francetv.py b/youtube_dl/extractor/francetv.py index 66aa3aa0d..ad85bc16d 100644 --- a/youtube_dl/extractor/francetv.py +++ b/youtube_dl/extractor/francetv.py @@ -21,7 +21,7 @@ class FranceTVBaseInfoExtractor(InfoExtractor):          thumbnail_path = info.find('image').text          return {'id': video_id, -                'ext': 'mp4', +                'ext': 'flv' if video_url.startswith('rtmp') else 'mp4',                  'url': video_url,                  'title': info.find('titre').text,                  'thumbnail': compat_urlparse.urljoin('http://pluzz.francetv.fr', thumbnail_path), @@ -66,35 +66,101 @@ class FranceTvInfoIE(FranceTVBaseInfoExtractor):          return self._extract_video(video_id) -class France2IE(FranceTVBaseInfoExtractor): -    IE_NAME = u'france2.fr' -    _VALID_URL = r'''(?x)https?://www\.france2\.fr/ +class FranceTVIE(FranceTVBaseInfoExtractor): +    IE_NAME = u'francetv' +    IE_DESC = u'France 2, 3, 4, 5 and Ô' +    _VALID_URL = r'''(?x)https?://www\.france[2345o]\.fr/          (?: -            emissions/.*?/videos/(?P<id>\d+) -        |   emission/(?P<key>[^/?]+) +            emissions/.*?/(videos|emissions)/(?P<id>[^/?]+) +        |   (emissions?|jt)/(?P<key>[^/?]+)          )''' -    _TEST = { -        u'url': u'http://www.france2.fr/emissions/13h15-le-samedi-le-dimanche/videos/75540104', -        u'file': u'75540104.mp4', -        u'info_dict': { -            u'title': u'13h15, le samedi...', -            u'description': u'md5:2e5b58ba7a2d3692b35c792be081a03d', +    _TESTS = [ +        # france2 +        { +            u'url': u'http://www.france2.fr/emissions/13h15-le-samedi-le-dimanche/videos/75540104', +            u'file': u'75540104.mp4', +            u'info_dict': { +                u'title': u'13h15, le samedi...', +                u'description': u'md5:2e5b58ba7a2d3692b35c792be081a03d', +            }, +            u'params': { +                # m3u8 download +                u'skip_download': True, +            },          }, -        u'params': { -            u'skip_download': True, +        # france3 +        { +            u'url': u'http://www.france3.fr/emissions/pieces-a-conviction/diffusions/13-11-2013_145575', +            u'info_dict': { +                u'id': u'000702326_CAPP_PicesconvictionExtrait313022013_120220131722_Au', +                u'ext': u'flv', +                u'title': u'Le scandale du prix des médicaments', +                u'description': u'md5:1384089fbee2f04fc6c9de025ee2e9ce', +            }, +            u'params': { +                # rtmp download +                u'skip_download': True, +            },          }, -    } +        # france4 +        { +            u'url': u'http://www.france4.fr/emissions/hero-corp/videos/rhozet_herocorp_bonus_1_20131106_1923_06112013172108_F4', +            u'info_dict': { +                u'id': u'rhozet_herocorp_bonus_1_20131106_1923_06112013172108_F4', +                u'ext': u'flv', +                u'title': u'Hero Corp Making of - Extrait 1', +                u'description': u'md5:c87d54871b1790679aec1197e73d650a', +            }, +            u'params': { +                # rtmp download +                u'skip_download': True, +            }, +        }, +        # france5 +        { +            u'url': u'http://www.france5.fr/emissions/c-a-dire/videos/92837968', +            u'info_dict': { +                u'id': u'92837968', +                u'ext': u'mp4', +                u'title': u'C à dire ?!', +                u'description': u'md5:fb1db1cbad784dcce7c7a7bd177c8e2f', +            }, +            u'params': { +                # m3u8 download +                u'skip_download': True, +            }, +        }, +        # franceo +        { +            u'url': u'http://www.franceo.fr/jt/info-afrique/04-12-2013', +            u'info_dict': { +                u'id': u'92327925', +                u'ext': u'mp4', +                u'title': u'Infô-Afrique', +                u'description': u'md5:ebf346da789428841bee0fd2a935ea55', +            }, +            u'params': { +                # m3u8 download +                u'skip_download': True, +            }, +            u'skip': u'The id changes frequently', +        }, +    ]      def _real_extract(self, url):          mobj = re.match(self._VALID_URL, url)          if mobj.group('key'):              webpage = self._download_webpage(url, mobj.group('key')) -            video_id = self._html_search_regex( -                r'''(?x)<div\s+class="video-player">\s* +            id_res = [ +                (r'''(?x)<div\s+class="video-player">\s*                      <a\s+href="http://videos.francetv.fr/video/([0-9]+)"\s+ -                    class="francetv-video-player">''', -                webpage, u'video ID') +                    class="francetv-video-player">'''), +                (r'<a id="player_direct" href="http://info\.francetelevisions' +                 '\.fr/\?id-video=([^"/&]+)'), +                (r'<a class="video" id="ftv_player_(.+?)"'), +            ] +            video_id = self._html_search_regex(id_res, webpage, u'video ID')          else:              video_id = mobj.group('id')          return self._extract_video(video_id) | 
