mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[ie/dacast] Fix HLS AES formats extraction (#11644)
Closes #11643 Authored by: bashonly
This commit is contained in:
		| @@ -1,3 +1,4 @@ | ||||
| import functools | ||||
| import hashlib | ||||
| import re | ||||
| import time | ||||
| @@ -51,6 +52,15 @@ class DacastVODIE(DacastBaseIE): | ||||
|             'thumbnail': 'https://universe-files.dacast.com/26137208-5858-65c1-5e9a-9d6b6bd2b6c2', | ||||
|         }, | ||||
|         'params': {'skip_download': 'm3u8'}, | ||||
|     }, {  # /uspaes/ in hls_url | ||||
|         'url': 'https://iframe.dacast.com/vod/f9823fc6-faba-b98f-0d00-4a7b50a58c5b/348c5c84-b6af-4859-bb9d-1d01009c795b', | ||||
|         'info_dict': { | ||||
|             'id': '348c5c84-b6af-4859-bb9d-1d01009c795b', | ||||
|             'ext': 'mp4', | ||||
|             'title': 'pl1-edyta-rubas-211124.mp4', | ||||
|             'uploader_id': 'f9823fc6-faba-b98f-0d00-4a7b50a58c5b', | ||||
|             'thumbnail': 'https://universe-files.dacast.com/4d0bd042-a536-752d-fc34-ad2fa44bbcbb.png', | ||||
|         }, | ||||
|     }] | ||||
|     _WEBPAGE_TESTS = [{ | ||||
|         'url': 'https://www.dacast.com/support/knowledgebase/how-can-i-embed-a-video-on-my-website/', | ||||
| @@ -74,6 +84,15 @@ class DacastVODIE(DacastBaseIE): | ||||
|         'params': {'skip_download': 'm3u8'}, | ||||
|     }] | ||||
| 
 | ||||
|     @functools.cached_property | ||||
|     def _usp_signing_secret(self): | ||||
|         player_js = self._download_webpage( | ||||
|             'https://player.dacast.com/js/player.js', None, 'Downloading player JS') | ||||
|         # Rotates every so often, but hardcode a fallback in case of JS change/breakage before rotation | ||||
|         return self._search_regex( | ||||
|             r'\bUSP_SIGNING_SECRET\s*=\s*(["\'])(?P<secret>(?:(?!\1).)+)', player_js, | ||||
|             'usp signing secret', group='secret', fatal=False) or 'odnInCGqhvtyRTtIiddxtuRtawYYICZP' | ||||
| 
 | ||||
|     def _real_extract(self, url): | ||||
|         user_id, video_id = self._match_valid_url(url).group('user_id', 'id') | ||||
|         query = {'contentId': f'{user_id}-vod-{video_id}', 'provider': 'universe'} | ||||
| @@ -94,10 +113,10 @@ class DacastVODIE(DacastBaseIE): | ||||
|         if 'DRM_EXT' in hls_url: | ||||
|             self.report_drm(video_id) | ||||
|         elif '/uspaes/' in hls_url: | ||||
|             # From https://player.dacast.com/js/player.js | ||||
|             # Ref: https://player.dacast.com/js/player.js | ||||
|             ts = int(time.time()) | ||||
|             signature = hashlib.sha1( | ||||
|                 f'{10413792000 - ts}{ts}YfaKtquEEpDeusCKbvYszIEZnWmBcSvw').digest().hex() | ||||
|                 f'{10413792000 - ts}{ts}{self._usp_signing_secret}'.encode()).digest().hex() | ||||
|             hls_aes['uri'] = f'https://keys.dacast.com/uspaes/{video_id}.key?s={signature}&ts={ts}' | ||||
| 
 | ||||
|         for retry in self.RetryManager(): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 bashonly
					bashonly