mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	[kaltura] Add support for referrer protected videos (#7409)
This commit is contained in:
		| @@ -2,12 +2,17 @@ | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| import re | ||||
| import base64 | ||||
|  | ||||
| from .common import InfoExtractor | ||||
| from ..compat import compat_urllib_parse | ||||
| from ..compat import ( | ||||
|     compat_urllib_parse, | ||||
|     compat_urlparse, | ||||
| ) | ||||
| from ..utils import ( | ||||
|     ExtractorError, | ||||
|     int_or_none, | ||||
|     unsmuggle_url, | ||||
| ) | ||||
|  | ||||
|  | ||||
| @@ -121,24 +126,40 @@ class KalturaIE(InfoExtractor): | ||||
|             video_id, actions, note='Downloading video info JSON') | ||||
|  | ||||
|     def _real_extract(self, url): | ||||
|         url, smuggled_data = unsmuggle_url(url, {}) | ||||
|  | ||||
|         mobj = re.match(self._VALID_URL, url) | ||||
|         partner_id = mobj.group('partner_id_s') or mobj.group('partner_id') or mobj.group('partner_id_html5') | ||||
|         entry_id = mobj.group('id_s') or mobj.group('id') or mobj.group('id_html5') | ||||
|  | ||||
|         info, source_data = self._get_video_info(entry_id, partner_id) | ||||
|  | ||||
|         formats = [{ | ||||
|             'format_id': '%(fileExt)s-%(bitrate)s' % f, | ||||
|             'ext': f['fileExt'], | ||||
|             'tbr': f['bitrate'], | ||||
|             'fps': f.get('frameRate'), | ||||
|             'filesize_approx': int_or_none(f.get('size'), invscale=1024), | ||||
|             'container': f.get('containerFormat'), | ||||
|             'vcodec': f.get('videoCodecId'), | ||||
|             'height': f.get('height'), | ||||
|             'width': f.get('width'), | ||||
|             'url': '%s/flavorId/%s' % (info['dataUrl'], f['id']), | ||||
|         } for f in source_data['flavorAssets']] | ||||
|         source_url = smuggled_data.get('source_url') | ||||
|         if source_url: | ||||
|             referrer = base64.b64encode( | ||||
|                 '://'.join(compat_urlparse.urlparse(source_url)[:2]) | ||||
|                 .encode('utf-8')).decode('utf-8') | ||||
|         else: | ||||
|             referrer = None | ||||
|  | ||||
|         formats = [] | ||||
|         for f in source_data['flavorAssets']: | ||||
|             video_url = '%s/flavorId/%s' % (info['dataUrl'], f['id']) | ||||
|             if referrer: | ||||
|                 video_url += '?referrer=%s' % referrer | ||||
|             formats.append({ | ||||
|                 'format_id': '%(fileExt)s-%(bitrate)s' % f, | ||||
|                 'ext': f['fileExt'], | ||||
|                 'tbr': f['bitrate'], | ||||
|                 'fps': f.get('frameRate'), | ||||
|                 'filesize_approx': int_or_none(f.get('size'), invscale=1024), | ||||
|                 'container': f.get('containerFormat'), | ||||
|                 'vcodec': f.get('videoCodecId'), | ||||
|                 'height': f.get('height'), | ||||
|                 'width': f.get('width'), | ||||
|                 'url': video_url, | ||||
|             }) | ||||
|         self._check_formats(formats, entry_id) | ||||
|         self._sort_formats(formats) | ||||
|  | ||||
|         return { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․