Adds format listing/selection support to the Comedy Central extractor.
authorChristopher Neugebauer <chrisjrn@gmail.com>
Tue, 27 Nov 2012 11:28:16 +0000 (22:28 +1100)
committerChristopher Neugebauer <chrisjrn@gmail.com>
Tue, 27 Nov 2012 11:28:16 +0000 (22:28 +1100)
youtube_dl/InfoExtractors.py

index 3cdce3b259983866855721374fb1c9e0db608b80..447695fda798b39c8c3fdac5bf45fdca36fde007 100644 (file)
@@ -2253,6 +2253,25 @@ class ComedyCentralIE(InfoExtractor):
        _VALID_URL = r'^(:(?P<shortname>tds|thedailyshow|cr|colbert|colbertnation|colbertreport))|(https?://)?(www\.)?(?P<showname>thedailyshow|colbertnation)\.com/full-episodes/(?P<episode>.*)$'
        IE_NAME = u'comedycentral'
 
+       _available_formats = ['3500', '2200', '1700', '1200', '750', '400']
+
+       _video_extensions = {
+               '3500': 'mp4',
+               '2200': 'mp4',
+               '1700': 'mp4',
+               '1200': 'mp4',
+               '750': 'mp4',
+               '400': 'mp4',
+       }
+       _video_dimensions = {
+               '3500': '1280x720',
+               '2200': '960x540',
+               '1700': '768x432',
+               '1200': '640x360',
+               '750': '512x288',
+               '400': '384x216',
+       }
+
        def report_extraction(self, episode_id):
                self._downloader.to_screen(u'[comedycentral] %s: Extracting information' % episode_id)
 
@@ -2265,6 +2284,14 @@ class ComedyCentralIE(InfoExtractor):
        def report_player_url(self, episode_id):
                self._downloader.to_screen(u'[comedycentral] %s: Determining player URL' % episode_id)
 
+
+       def _print_formats(self, formats):
+               print('Available formats:')
+               for x in formats:
+                       print('%s\t:\t%s\t[%s]' %(x, self._video_extensions.get(x, 'mp4'), self._video_dimensions.get(x, '???')))
+
+
+
        def _real_extract(self, url):
                mobj = re.match(self._VALID_URL, url)
                if mobj is None:
@@ -2359,7 +2386,20 @@ class ComedyCentralIE(InfoExtractor):
                                continue
 
                        # For now, just pick the highest bitrate
-                       format,video_url = turls[-1]
+                       
+                       print turls
+
+                       if self._downloader.params.get('listformats', None):
+                           self._print_formats([i[0] for i in turls])
+                           return
+
+                       format,video_url = turls[-1]
+                       req_format = self._downloader.params.get('format', None)
+
+                       for f,v in turls:
+                           if f == req_format:
+                             format, video_url = f, v
+                             break
 
                        # Patch to download from alternative CDN, which does not 
                         # break on current RTMPDump builds