[twitch] Pass v5 accept header and fix thumbnails extraction (closes #25531)
This commit is contained in:
		
							parent
							
								
									c8b232cc48
								
							
						
					
					
						commit
						a0455d0ffd
					
				
					 1 changed files with 21 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -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')),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue