[vidme] Extract DASH and HLS formats

This commit is contained in:
Sergey M․ 2017-08-05 00:00:21 +07:00
parent 799802f368
commit f31fd0693b
No known key found for this signature in database
GPG key ID: 2C393E0F18A9236D

View file

@ -3,7 +3,10 @@ from __future__ import unicode_literals
import itertools import itertools
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import compat_HTTPError from ..compat import (
compat_HTTPError,
compat_str,
)
from ..utils import ( from ..utils import (
ExtractorError, ExtractorError,
int_or_none, int_or_none,
@ -161,13 +164,28 @@ class VidmeIE(InfoExtractor):
'or for violating the terms of use.', 'or for violating the terms of use.',
expected=True) expected=True)
formats = [{ formats = []
for f in video.get('formats', []):
format_url = f.get('uri')
if not format_url or not isinstance(format_url, compat_str):
continue
format_type = f.get('type')
if format_type == 'dash':
formats.extend(self._extract_mpd_formats(
format_url, video_id, mpd_id='dash', fatal=False))
elif format_type == 'hls':
formats.extend(self._extract_m3u8_formats(
format_url, video_id, 'mp4', entry_protocol='m3u8_native',
m3u8_id='hls', fatal=False))
else:
formats.append({
'format_id': f.get('type'), 'format_id': f.get('type'),
'url': f['uri'], 'url': format_url,
'width': int_or_none(f.get('width')), 'width': int_or_none(f.get('width')),
'height': int_or_none(f.get('height')), 'height': int_or_none(f.get('height')),
'preference': 0 if f.get('type', '').endswith('clip') else 1, 'preference': 0 if f.get('type', '').endswith(
} for f in video.get('formats', []) if f.get('uri')] 'clip') else 1,
})
if not formats and video.get('complete_url'): if not formats and video.get('complete_url'):
formats.append({ formats.append({