mirror of
				https://github.com/ytdl-org/youtube-dl
				synced 2025-11-04 03:33:46 +00:00 
			
		
		
		
	This commit is contained in:
		
							parent
							
								
									3bed621750
								
							
						
					
					
						commit
						2b845c4086
					
				@ -4,6 +4,7 @@ import re
 | 
			
		||||
 | 
			
		||||
from .common import InfoExtractor
 | 
			
		||||
from ..utils import (
 | 
			
		||||
    determine_ext,
 | 
			
		||||
    ExtractorError,
 | 
			
		||||
    merge_dicts,
 | 
			
		||||
    orderedSet,
 | 
			
		||||
@ -75,11 +76,20 @@ class SpankBangIE(InfoExtractor):
 | 
			
		||||
            if not f_url:
 | 
			
		||||
                return
 | 
			
		||||
            f = parse_resolution(format_id)
 | 
			
		||||
            f.update({
 | 
			
		||||
                'url': f_url,
 | 
			
		||||
                'format_id': format_id,
 | 
			
		||||
            })
 | 
			
		||||
            formats.append(f)
 | 
			
		||||
            ext = determine_ext(f_url)
 | 
			
		||||
            if format_id.startswith('m3u8') or ext == 'm3u8':
 | 
			
		||||
                formats.extend(self._extract_m3u8_formats(
 | 
			
		||||
                    f_url, video_id, 'mp4', entry_protocol='m3u8_native',
 | 
			
		||||
                    m3u8_id='hls', fatal=False))
 | 
			
		||||
            elif format_id.startswith('mpd') or ext == 'mpd':
 | 
			
		||||
                formats.extend(self._extract_mpd_formats(
 | 
			
		||||
                    f_url, video_id, mpd_id='dash', fatal=False))
 | 
			
		||||
            elif ext == 'mp4' or f.get('width') or f.get('height'):
 | 
			
		||||
                f.update({
 | 
			
		||||
                    'url': f_url,
 | 
			
		||||
                    'format_id': format_id,
 | 
			
		||||
                })
 | 
			
		||||
                formats.append(f)
 | 
			
		||||
 | 
			
		||||
        STREAM_URL_PREFIX = 'stream_url_'
 | 
			
		||||
 | 
			
		||||
@ -93,28 +103,22 @@ class SpankBangIE(InfoExtractor):
 | 
			
		||||
                r'data-streamkey\s*=\s*(["\'])(?P<value>(?:(?!\1).)+)\1',
 | 
			
		||||
                webpage, 'stream key', group='value')
 | 
			
		||||
 | 
			
		||||
            sb_csrf_session = self._get_cookies(
 | 
			
		||||
                'https://spankbang.com')['sb_csrf_session'].value
 | 
			
		||||
 | 
			
		||||
            stream = self._download_json(
 | 
			
		||||
                'https://spankbang.com/api/videos/stream', video_id,
 | 
			
		||||
                'Downloading stream JSON', data=urlencode_postdata({
 | 
			
		||||
                    'id': stream_key,
 | 
			
		||||
                    'data': 0,
 | 
			
		||||
                    'sb_csrf_session': sb_csrf_session,
 | 
			
		||||
                }), headers={
 | 
			
		||||
                    'Referer': url,
 | 
			
		||||
                    'X-CSRFToken': sb_csrf_session,
 | 
			
		||||
                    'X-Requested-With': 'XMLHttpRequest',
 | 
			
		||||
                })
 | 
			
		||||
 | 
			
		||||
            for format_id, format_url in stream.items():
 | 
			
		||||
                if format_id.startswith(STREAM_URL_PREFIX):
 | 
			
		||||
                    if format_url and isinstance(format_url, list):
 | 
			
		||||
                        format_url = format_url[0]
 | 
			
		||||
                    extract_format(
 | 
			
		||||
                        format_id[len(STREAM_URL_PREFIX):], format_url)
 | 
			
		||||
                if format_url and isinstance(format_url, list):
 | 
			
		||||
                    format_url = format_url[0]
 | 
			
		||||
                extract_format(format_id, format_url)
 | 
			
		||||
 | 
			
		||||
        self._sort_formats(formats)
 | 
			
		||||
        self._sort_formats(formats, field_preference=('preference', 'height', 'width', 'fps', 'tbr', 'format_id'))
 | 
			
		||||
 | 
			
		||||
        info = self._search_json_ld(webpage, video_id, default={})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user