[tagesschau] Add support for width/height
authorPhilipp Hagemeister <phihag@phihag.de>
Sat, 7 Jun 2014 13:14:20 +0000 (15:14 +0200)
committerPhilipp Hagemeister <phihag@phihag.de>
Sat, 7 Jun 2014 13:14:20 +0000 (15:14 +0200)
youtube_dl/extractor/tagesschau.py

index e2ad7c393cb8ca1172bce18e6ae81d3a045da907..36331529eb92f81d97d910b30610b4176a56667b 100644 (file)
@@ -7,7 +7,7 @@ from .common import InfoExtractor
 
 
 class TagesschauIE(InfoExtractor):
-    _VALID_URL = r'https?://(?:www\.)?tagesschau\.de/multimedia/video/video(?P<id>-?\d+)\.html'
+    _VALID_URL = r'https?://(?:www\.)?tagesschau\.de/multimedia/video/video(?P<id>-?[0-9]+)\.html'
 
     _TESTS = [{
         'url': 'http://www.tagesschau.de/multimedia/video/video1399128.html',
@@ -25,11 +25,17 @@ class TagesschauIE(InfoExtractor):
         'info_dict': {
             'id': '196',
             'ext': 'mp4',
-            'title': 'Ukraine-Konflikt: Klitschko in Kiew als B\xfcrgermeister vereidigt',
+            'title': 'Ukraine-Konflikt: Klitschko in Kiew als BΓΌrgermeister vereidigt',
             'description': 'md5:f22e4af75821d174fa6c977349682691',
             'thumbnail': 're:http://.*\.jpg',
         },
-    }]      
+    }]
+
+    _FORMATS = {
+        's': {'width': 256, 'height': 144, 'quality': 1},
+        'm': {'width': 512, 'height': 288, 'quality': 2},
+        'l': {'width': 960, 'height': 544, 'quality': 3},
+    }
 
     def _real_extract(self, url):
         mobj = re.match(self._VALID_URL, url)
@@ -43,31 +49,22 @@ class TagesschauIE(InfoExtractor):
         webpage = self._download_webpage(url, display_id)
 
         playerpage = self._download_webpage(
-            'http://www.tagesschau.de/multimedia/video/video%s~player_autoplay-true.html' % video_id, display_id, 'Downloading player page')
+            'http://www.tagesschau.de/multimedia/video/video%s~player_autoplay-true.html' % video_id,
+            display_id, 'Downloading player page')
 
-        medias = re.findall(r'"(http://media.+?)", type:"video/(.+?)", quality:"(.+?)"', playerpage)
+        medias = re.findall(
+            r'"(http://media.+?)", type:"video/(.+?)", quality:"(.+?)"',
+            playerpage)
 
         formats = []
         for url, ext, res in medias:
-            
-            if res == 's':
-                res = 'small'
-                quality = 0
-            elif res == 'm':
-                res = 'medium'
-                quality = 1
-            elif res == 'l':
-                res = 'large'
-                quality = 2
-            else:
-                quality = 0
-
-            formats.append({
-                'format_id': res+'_'+ext,
+            f = {
+                'format_id': res + '_' + ext,
                 'url': url,
-                'quality': quality,
                 'ext': ext,
-            })
+            }
+            f.update(self._FORMATS.get(res, {}))
+            formats.append(f)
 
         self._sort_formats(formats)
 
@@ -76,7 +73,7 @@ class TagesschauIE(InfoExtractor):
         return {
             'id': display_id,
             'title': self._og_search_title(webpage).strip(),
-            'thumbnail': 'http://www.tagesschau.de'+thumbnail,
+            'thumbnail': 'http://www.tagesschau.de' + thumbnail,
             'formats': formats,
             'description': self._og_search_description(webpage).strip(),
         }