diff options
| -rw-r--r-- | youtube_dl/extractor/twitch.py | 23 | 
1 files changed, 21 insertions, 2 deletions
| diff --git a/youtube_dl/extractor/twitch.py b/youtube_dl/extractor/twitch.py index 78ee0115c..45b8a7236 100644 --- a/youtube_dl/extractor/twitch.py +++ b/youtube_dl/extractor/twitch.py @@ -21,6 +21,7 @@ from ..utils import (      orderedSet,      parse_duration,      parse_iso8601, +    qualities,      try_get,      unified_timestamp,      update_url_query, @@ -50,7 +51,10 @@ class TwitchBaseIE(InfoExtractor):      def _call_api(self, path, item_id, *args, **kwargs):          headers = kwargs.get('headers', {}).copy() -        headers['Client-ID'] = self._CLIENT_ID +        headers.update({ +            'Accept': 'application/vnd.twitchtv.v5+json; charset=UTF-8', +            'Client-ID': self._CLIENT_ID, +        })          kwargs['headers'] = headers          response = self._download_json(              '%s/%s' % (self._API_BASE, path), item_id, @@ -186,12 +190,27 @@ class TwitchItemBaseIE(TwitchBaseIE):              is_live = False          else:              is_live = None +        _QUALITIES = ('small', 'medium', 'large') +        quality_key = qualities(_QUALITIES) +        thumbnails = [] +        preview = info.get('preview') +        if isinstance(preview, dict): +            for thumbnail_id, thumbnail_url in preview.items(): +                thumbnail_url = url_or_none(thumbnail_url) +                if not thumbnail_url: +                    continue +                if thumbnail_id not in _QUALITIES: +                    continue +                thumbnails.append({ +                    'url': thumbnail_url, +                    'preference': quality_key(thumbnail_id), +                })          return {              'id': info['_id'],              'title': info.get('title') or 'Untitled Broadcast',              'description': info.get('description'),              'duration': int_or_none(info.get('length')), -            'thumbnail': info.get('preview'), +            'thumbnails': thumbnails,              'uploader': info.get('channel', {}).get('display_name'),              'uploader_id': info.get('channel', {}).get('name'),              'timestamp': parse_iso8601(info.get('recorded_at')), | 
