diff options
Diffstat (limited to 'youtube_dl/extractor/bliptv.py')
| -rw-r--r-- | youtube_dl/extractor/bliptv.py | 87 | 
1 files changed, 43 insertions, 44 deletions
| diff --git a/youtube_dl/extractor/bliptv.py b/youtube_dl/extractor/bliptv.py index 5e33a69df..0e63208df 100644 --- a/youtube_dl/extractor/bliptv.py +++ b/youtube_dl/extractor/bliptv.py @@ -70,13 +70,14 @@ class BlipTVIE(InfoExtractor):          info = None          urlh = self._request_webpage(request, None, False,              u'unable to download video info webpage') +          if urlh.headers.get('Content-Type', '').startswith('video/'): # Direct download              basename = url.split('/')[-1]              title,ext = os.path.splitext(basename)              title = title.decode('UTF-8')              ext = ext.replace('.', '')              self.report_direct_download(title) -            info = { +            return {                  'id': title,                  'url': url,                  'uploader': None, @@ -85,49 +86,47 @@ class BlipTVIE(InfoExtractor):                  'ext': ext,                  'urlhandle': urlh              } -        if info is None: # Regular URL -            try: -                json_code_bytes = urlh.read() -                json_code = json_code_bytes.decode('utf-8') -            except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: -                raise ExtractorError(u'Unable to read video info webpage: %s' % compat_str(err)) - -            try: -                json_data = json.loads(json_code) -                if 'Post' in json_data: -                    data = json_data['Post'] -                else: -                    data = json_data - -                upload_date = datetime.datetime.strptime(data['datestamp'], '%m-%d-%y %H:%M%p').strftime('%Y%m%d') -                if 'additionalMedia' in data: -                    formats = sorted(data['additionalMedia'], key=lambda f: int(f['media_height'])) -                    best_format = formats[-1] -                    video_url = best_format['url'] -                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) - -                info = { -                    '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', -                } -            except (ValueError,KeyError) as err: -                raise ExtractorError(u'Unable to parse video information: %s' % repr(err)) - -        return [info] + +        try: +            json_code_bytes = urlh.read() +            json_code = json_code_bytes.decode('utf-8') +        except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: +            raise ExtractorError(u'Unable to read video info webpage: %s' % compat_str(err)) + +        try: +            json_data = json.loads(json_code) +            if 'Post' in json_data: +                data = json_data['Post'] +            else: +                data = json_data + +            upload_date = datetime.datetime.strptime(data['datestamp'], '%m-%d-%y %H:%M%p').strftime('%Y%m%d') +            if 'additionalMedia' in data: +                formats = sorted(data['additionalMedia'], key=lambda f: int(f['media_height'])) +                best_format = formats[-1] +                video_url = best_format['url'] +            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) + +            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', +            } +        except (ValueError, KeyError) as err: +            raise ExtractorError(u'Unable to parse video information: %s' % repr(err))  class BlipTVUserIE(InfoExtractor): | 
