summary refs log tree commit diff
diff options
context:
space:
mode:
authorrzhxeo <rzhxeot7z81b4700@mailcatch.com>2014-01-01 19:45:45 +0100
committerrzhxeo <rzhxeot7z81b4700@mailcatch.com>2014-01-01 19:45:45 +0100
commit531147dd5e8ed96671186cca9cd40e954c249366 (patch)
tree0ecf01cce3d6d5f474ce322163abdbe378693cb4
parenteadaf08c1670d2fc9a2078faca95fbc49d6a5af0 (diff)
downloadyoutube-dl-531147dd5e8ed96671186cca9cd40e954c249366.tar.gz
youtube-dl-531147dd5e8ed96671186cca9cd40e954c249366.tar.xz
youtube-dl-531147dd5e8ed96671186cca9cd40e954c249366.zip
[BlipTVIE] Extract all formats
-rw-r--r--youtube_dl/extractor/bliptv.py32
1 files changed, 19 insertions, 13 deletions
diff --git a/youtube_dl/extractor/bliptv.py b/youtube_dl/extractor/bliptv.py
index c7e0a53c1..49b5b81f7 100644
--- a/youtube_dl/extractor/bliptv.py
+++ b/youtube_dl/extractor/bliptv.py
@@ -14,6 +14,7 @@ from ..utils import (
 
     ExtractorError,
     unescapeHTML,
+    determine_ext,
 )
 
 
@@ -21,7 +22,6 @@ class BlipTVIE(InfoExtractor):
     """Information extractor for blip.tv"""
 
     _VALID_URL = r'^(?:https?://)?(?:www\.)?blip\.tv/((.+/)|(play/)|(api\.swf#))(.+)$'
-    _URL_EXT = r'^.*\.([a-z0-9]+)$'
     IE_NAME = u'blip.tv'
     _TEST = {
         u'url': u'http://blip.tv/cbr/cbr-exclusive-gotham-city-imposters-bats-vs-jokerz-short-3-5796352',
@@ -82,29 +82,35 @@ class BlipTVIE(InfoExtractor):
                 data = json_data
 
             upload_date = datetime.datetime.strptime(data['datestamp'], '%m-%d-%y %H:%M%p').strftime('%Y%m%d')
+            formats = []
             if 'additionalMedia' in data:
-                formats = sorted(data['additionalMedia'], key=lambda f: int(f['media_height']))
-                best_format = formats[-1]
-                video_url = best_format['url']
+                for f in sorted(data['additionalMedia'], key=lambda f: int(f['media_height'])):
+                    if not int(f['media_width']): # filter m3u8
+                        continue
+                    formats.append({
+                        'url': f['url'],
+                        'ext': determine_ext(f['url']),
+                        'format_id': f['role'],
+                        'width': int(f['media_width']),
+                        'height': int(f['media_height']),
+                    })
             else:
-                video_url = data['media']['url']
-            umobj = re.match(self._URL_EXT, video_url)
-            if umobj is None:
-                raise ValueError('Can not determine filename extension')
-            ext = umobj.group(1)
+                formats.append({
+                    'url': data['media']['url'],
+                    'ext': determine_ext(data['media']['url']),
+                    'width': int(data['media']['width']),
+                    'height': int(data['media']['height']),
+                })
 
             return {
                 'id': compat_str(data['item_id']),
-                'url': video_url,
                 'uploader': data['display_name'],
                 'upload_date': upload_date,
                 'title': data['title'],
-                'ext': ext,
-                'format': data['media']['mimeType'],
                 'thumbnail': data['thumbnailUrl'],
                 'description': data['description'],
-                'player_url': data['embedUrl'],
                 'user_agent': 'iTunes/10.6.1',
+                'formats': formats,
             }
         except (ValueError, KeyError) as err:
             raise ExtractorError(u'Unable to parse video information: %s' % repr(err))