mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 22:55:18 +00:00 
			
		
		
		
	[teamcoco] Fix "preload" data extraction (fixes #5179)
This commit is contained in:
		| @@ -1,3 +1,4 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| import base64 | ||||
| @@ -35,6 +36,17 @@ class TeamcocoIE(InfoExtractor): | ||||
|                 'duration': 288, | ||||
|                 'age_limit': 0, | ||||
|             } | ||||
|         }, { | ||||
|             'url': 'http://teamcoco.com/video/timothy-olyphant-drinking-whiskey', | ||||
|             'info_dict': { | ||||
|                 'id': '88748', | ||||
|                 'ext': 'mp4', | ||||
|                 'title': 'Timothy Olyphant Raises A Toast To “Justified”', | ||||
|                 'description': 'md5:15501f23f020e793aeca761205e42c24', | ||||
|             }, | ||||
|             'params': { | ||||
|                 'skip_download': True,  # m3u8 downloads | ||||
|             } | ||||
|         } | ||||
|     ] | ||||
|     _VIDEO_ID_REGEXES = ( | ||||
| @@ -54,10 +66,23 @@ class TeamcocoIE(InfoExtractor): | ||||
|             video_id = self._html_search_regex( | ||||
|                 self._VIDEO_ID_REGEXES, webpage, 'video id') | ||||
|  | ||||
|         preload = None | ||||
|         preloads = re.findall(r'"preload":\s*"([^"]+)"', webpage) | ||||
|         if not preloads: | ||||
|             raise ExtractorError('Preload information could not be extracted') | ||||
|         if preloads: | ||||
|             preload = max([(len(p), p) for p in preloads])[1] | ||||
|  | ||||
|         if not preload: | ||||
|             preload = ''.join(re.findall(r'this\.push\("([^"]+)"\);', webpage)) | ||||
|  | ||||
|         if not preload: | ||||
|             preload = self._html_search_regex([ | ||||
|                 r'player,\[?"([^"]+)"\]?', r'player.init\(\[?"([^"]+)"\]?\)' | ||||
|             ], webpage.replace('","', ''), 'preload data', default=None) | ||||
|  | ||||
|         if not preload: | ||||
|             raise ExtractorError( | ||||
|                 'Preload information could not be extracted', expected=True) | ||||
|  | ||||
|         data = self._parse_json( | ||||
|             base64.b64decode(preload.encode('ascii')).decode('utf-8'), video_id) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Yen Chi Hsuan
					Yen Chi Hsuan