diff options
Diffstat (limited to 'youtube_dl/extractor/comedycentral.py')
| -rw-r--r-- | youtube_dl/extractor/comedycentral.py | 61 | 
1 files changed, 41 insertions, 20 deletions
diff --git a/youtube_dl/extractor/comedycentral.py b/youtube_dl/extractor/comedycentral.py index c81ce5a96..15ca361f0 100644 --- a/youtube_dl/extractor/comedycentral.py +++ b/youtube_dl/extractor/comedycentral.py @@ -2,11 +2,12 @@ from __future__ import unicode_literals  import re -from .common import InfoExtractor  from .mtv import MTVServicesInfoExtractor -from ..utils import ( +from ..compat import (      compat_str,      compat_urllib_parse, +) +from ..utils import (      ExtractorError,      float_or_none,      unified_strdate, @@ -31,26 +32,26 @@ class ComedyCentralIE(MTVServicesInfoExtractor):      } -class ComedyCentralShowsIE(InfoExtractor): +class ComedyCentralShowsIE(MTVServicesInfoExtractor):      IE_DESC = 'The Daily Show / The Colbert Report' -    # urls can be abbreviations like :thedailyshow or :colbert +    # urls can be abbreviations like :thedailyshow      # urls for episodes like:      # or urls for clips like: http://www.thedailyshow.com/watch/mon-december-10-2012/any-given-gun-day      #                     or: http://www.colbertnation.com/the-colbert-report-videos/421667/november-29-2012/moon-shattering-news      #                     or: http://www.colbertnation.com/the-colbert-report-collections/422008/festival-of-lights/79524 -    _VALID_URL = r'''(?x)^(:(?P<shortname>tds|thedailyshow|cr|colbert|colbertnation|colbertreport) +    _VALID_URL = r'''(?x)^(:(?P<shortname>tds|thedailyshow)                        |https?://(:www\.)?                            (?P<showname>thedailyshow|thecolbertreport)\.(?:cc\.)?com/                           ((?:full-)?episodes/(?:[0-9a-z]{6}/)?(?P<episode>.*)|                            (?P<clip> -                              (?:(?:guests/[^/]+|videos|video-playlists|special-editions)/[^/]+/(?P<videotitle>[^/?#]+)) +                              (?:(?:guests/[^/]+|videos|video-playlists|special-editions|news-team/[^/]+)/[^/]+/(?P<videotitle>[^/?#]+))                                |(the-colbert-report-(videos|collections)/(?P<clipID>[0-9]+)/[^/]*/(?P<cntitle>.*?))                                |(watch/(?P<date>[^/]*)/(?P<tdstitle>.*))                            )|                            (?P<interview>                                extended-interviews/(?P<interID>[0-9a-z]+)/(?:playlist_tds_extended_)?(?P<interview_title>.*?)(/.*?)?))) -                     (?:[?#].*|$)''' -    _TEST = { +                     ''' +    _TESTS = [{          'url': 'http://thedailyshow.cc.com/watch/thu-december-13-2012/kristen-stewart',          'md5': '4e2f5cb088a83cd8cdb7756132f9739d',          'info_dict': { @@ -61,7 +62,37 @@ class ComedyCentralShowsIE(InfoExtractor):              'uploader': 'thedailyshow',              'title': 'thedailyshow kristen-stewart part 1',          } -    } +    }, { +        'url': 'http://thedailyshow.cc.com/extended-interviews/xm3fnq/andrew-napolitano-extended-interview', +        'only_matching': True, +    }, { +        'url': 'http://thecolbertreport.cc.com/videos/29w6fx/-realhumanpraise-for-fox-news', +        'only_matching': True, +    }, { +        'url': 'http://thecolbertreport.cc.com/videos/gh6urb/neil-degrasse-tyson-pt--1?xrs=eml_col_031114', +        'only_matching': True, +    }, { +        'url': 'http://thedailyshow.cc.com/guests/michael-lewis/3efna8/exclusive---michael-lewis-extended-interview-pt--3', +        'only_matching': True, +    }, { +        'url': 'http://thedailyshow.cc.com/episodes/sy7yv0/april-8--2014---denis-leary', +        'only_matching': True, +    }, { +        'url': 'http://thecolbertreport.cc.com/episodes/8ase07/april-8--2014---jane-goodall', +        'only_matching': True, +    }, { +        'url': 'http://thedailyshow.cc.com/video-playlists/npde3s/the-daily-show-19088-highlights', +        'only_matching': True, +    }, { +        'url': 'http://thedailyshow.cc.com/video-playlists/t6d9sg/the-daily-show-20038-highlights/be3cwo', +        'only_matching': True, +    }, { +        'url': 'http://thedailyshow.cc.com/special-editions/2l8fdb/special-edition---a-look-back-at-food', +        'only_matching': True, +    }, { +        'url': 'http://thedailyshow.cc.com/news-team/michael-che/7wnfel/we-need-to-talk-about-israel', +        'only_matching': True, +    }]      _available_formats = ['3500', '2200', '1700', '1200', '750', '400'] @@ -82,18 +113,8 @@ class ComedyCentralShowsIE(InfoExtractor):          '400': (384, 216),      } -    @staticmethod -    def _transform_rtmp_url(rtmp_video_url): -        m = re.match(r'^rtmpe?://.*?/(?P<finalid>gsp\.comedystor/.*)$', rtmp_video_url) -        if not m: -            raise ExtractorError('Cannot transform RTMP url') -        base = 'http://mtvnmobile.vo.llnwd.net/kip0/_pxn=1+_pxI0=Ripod-h264+_pxL0=undefined+_pxM0=+_pxK=18639+_pxE=mp4/44620/mtvnorigin/' -        return base + m.group('finalid') -      def _real_extract(self, url): -        mobj = re.match(self._VALID_URL, url, re.VERBOSE) -        if mobj is None: -            raise ExtractorError('Invalid URL: %s' % url) +        mobj = re.match(self._VALID_URL, url)          if mobj.group('shortname'):              if mobj.group('shortname') in ('tds', 'thedailyshow'):  | 
