def _real_extract(self, url):
video_id = self._match_id(url)
# Get 'api_token' cookie
- self._request_webpage(HEADRequest('http://www.viewster.com/'), video_id)
+ self._request_webpage(
+ HEADRequest('http://www.viewster.com/'),
+ video_id, headers=self.geo_verification_headers())
cookies = self._get_cookies('http://www.viewster.com/')
self._AUTH_TOKEN = compat_urllib_parse_unquote(cookies['api_token'].value)
def concat(suffix, sep='-'):
return (base_format_id + '%s%s' % (sep, suffix)) if base_format_id else suffix
- for media_type in ('application/f4m+xml', 'application/x-mpegURL', 'video/mp4'):
- media = self._download_json(
- 'https://public-api.viewster.com/movies/%s/video' % entry_id,
- video_id, 'Downloading %s JSON' % concat(media_type, ' '), fatal=False, query={
- 'mediaType': media_type,
- 'language': audio,
- 'subtitle': subtitle,
- })
- if not media:
- continue
+ medias = self._download_json(
+ 'https://public-api.viewster.com/movies/%s/videos' % entry_id,
+ video_id, fatal=False, query={
+ 'mediaTypes': ['application/f4m+xml', 'application/x-mpegURL', 'video/mp4'],
+ 'language': audio,
+ 'subtitle': subtitle,
+ })
+ if not medias:
+ continue
+ for media in medias:
video_url = media.get('Uri')
if not video_url:
continue
formats.extend(m3u8_formats)
else:
qualities_basename = self._search_regex(
- '/([^/]+)\.csmil/',
+ r'/([^/]+)\.csmil/',
manifest_url, 'qualities basename', default=None)
if not qualities_basename:
continue
if m3u8_formats:
self._sort_formats(m3u8_formats)
m3u8_formats = list(filter(
- lambda f: f.get('vcodec') != 'none' and f.get('resolution') != 'multiple',
- m3u8_formats))
+ lambda f: f.get('vcodec') != 'none', m3u8_formats))
if len(qualities) == len(m3u8_formats):
for q, m3u8_format in zip(qualities, m3u8_formats):
f = m3u8_format.copy()