mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 00:25:15 +00:00 
			
		
		
		
	[spankwire] Fix extraction and modernize
This commit is contained in:
		@@ -9,7 +9,6 @@ from ..utils import (
 | 
				
			|||||||
    compat_urllib_parse,
 | 
					    compat_urllib_parse,
 | 
				
			||||||
    unified_strdate,
 | 
					    unified_strdate,
 | 
				
			||||||
    str_to_int,
 | 
					    str_to_int,
 | 
				
			||||||
    int_or_none,
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
from ..aes import aes_decrypt_text
 | 
					from ..aes import aes_decrypt_text
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -40,31 +39,42 @@ class SpankwireIE(InfoExtractor):
 | 
				
			|||||||
        req.add_header('Cookie', 'age_verified=1')
 | 
					        req.add_header('Cookie', 'age_verified=1')
 | 
				
			||||||
        webpage = self._download_webpage(req, video_id)
 | 
					        webpage = self._download_webpage(req, video_id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        title = self._html_search_regex(r'<h1>([^<]+)', webpage, 'title')
 | 
					        title = self._html_search_regex(
 | 
				
			||||||
 | 
					            r'<h1>([^<]+)', webpage, 'title')
 | 
				
			||||||
        description = self._html_search_regex(
 | 
					        description = self._html_search_regex(
 | 
				
			||||||
            r'<div\s+id="descriptionContent">([^<]+)<', webpage, 'description', fatal=False)
 | 
					            r'<div\s+id="descriptionContent">([^<]+)<',
 | 
				
			||||||
 | 
					            webpage, 'description', fatal=False)
 | 
				
			||||||
        thumbnail = self._html_search_regex(
 | 
					        thumbnail = self._html_search_regex(
 | 
				
			||||||
            r'flashvars\.image_url = "([^"]+)', webpage, 'thumbnail', fatal=False)
 | 
					            r'playerData\.screenShot\s*=\s*"([^"]+)"',
 | 
				
			||||||
 | 
					            webpage, 'thumbnail', fatal=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        uploader = self._html_search_regex(
 | 
					        uploader = self._html_search_regex(
 | 
				
			||||||
            r'by:\s*<a [^>]*>(.+?)</a>', webpage, 'uploader', fatal=False)
 | 
					            r'by:\s*<a [^>]*>(.+?)</a>',
 | 
				
			||||||
 | 
					            webpage, 'uploader', fatal=False)
 | 
				
			||||||
        uploader_id = self._html_search_regex(
 | 
					        uploader_id = self._html_search_regex(
 | 
				
			||||||
            r'by:\s*<a href="/Profile\.aspx\?.*?UserId=(\d+).*?"', webpage, 'uploader id', fatal=False)
 | 
					            r'by:\s*<a href="/Profile\.aspx\?.*?UserId=(\d+).*?"',
 | 
				
			||||||
        upload_date = self._html_search_regex(r'</a> on (.+?) at \d+:\d+', webpage, 'upload date', fatal=False)
 | 
					            webpage, 'uploader id', fatal=False)
 | 
				
			||||||
        if upload_date:
 | 
					        upload_date = unified_strdate(self._html_search_regex(
 | 
				
			||||||
            upload_date = unified_strdate(upload_date)
 | 
					            r'</a> on (.+?) at \d+:\d+',
 | 
				
			||||||
 | 
					            webpage, 'upload date', fatal=False))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        view_count = self._html_search_regex(
 | 
					        view_count = str_to_int(self._html_search_regex(
 | 
				
			||||||
            r'<div id="viewsCounter"><span>([^<]+)</span> views</div>', webpage, 'view count', fatal=False)
 | 
					            r'<div id="viewsCounter"><span>([\d,\.]+)</span> views</div>',
 | 
				
			||||||
        if view_count:
 | 
					            webpage, 'view count', fatal=False))
 | 
				
			||||||
            view_count = str_to_int(view_count)
 | 
					        comment_count = str_to_int(self._html_search_regex(
 | 
				
			||||||
        comment_count = int_or_none(self._html_search_regex(
 | 
					            r'Comments<span[^>]+>\s*\(([\d,\.]+)\)</span>',
 | 
				
			||||||
            r'<span id="spCommentCount">\s*(\d+)</span> Comments</div>', webpage, 'comment count', fatal=False))
 | 
					            webpage, 'comment count', fatal=False))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        video_urls = list(map(compat_urllib_parse.unquote , re.findall(r'flashvars\.quality_[0-9]{3}p = "([^"]+)', webpage)))
 | 
					        video_urls = list(map(
 | 
				
			||||||
 | 
					            compat_urllib_parse.unquote,
 | 
				
			||||||
 | 
					            re.findall(r'playerData\.cdnPath[0-9]{3,}\s*=\s*"([^"]+)', webpage)))
 | 
				
			||||||
        if webpage.find('flashvars\.encrypted = "true"') != -1:
 | 
					        if webpage.find('flashvars\.encrypted = "true"') != -1:
 | 
				
			||||||
            password = self._html_search_regex(r'flashvars\.video_title = "([^"]+)', webpage, 'password').replace('+', ' ')
 | 
					            password = self._html_search_regex(
 | 
				
			||||||
            video_urls = list(map(lambda s: aes_decrypt_text(s, password, 32).decode('utf-8'), video_urls))
 | 
					                r'flashvars\.video_title = "([^"]+)',
 | 
				
			||||||
 | 
					                webpage, 'password').replace('+', ' ')
 | 
				
			||||||
 | 
					            video_urls = list(map(
 | 
				
			||||||
 | 
					                lambda s: aes_decrypt_text(s, password, 32).decode('utf-8'),
 | 
				
			||||||
 | 
					                video_urls))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        formats = []
 | 
					        formats = []
 | 
				
			||||||
        for video_url in video_urls:
 | 
					        for video_url in video_urls:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user