mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[limelight] Improve embeds extraction (closes #12761)
* Move extraction code to extractor * Add extraction for LimelightEmbeddedPlayerFlash embeds * Extract multiple video
This commit is contained in:
		| @@ -9,6 +9,7 @@ from ..utils import ( | ||||
|     determine_ext, | ||||
|     float_or_none, | ||||
|     int_or_none, | ||||
|     smuggle_url, | ||||
|     unsmuggle_url, | ||||
|     ExtractorError, | ||||
| ) | ||||
| @@ -18,6 +19,42 @@ class LimelightBaseIE(InfoExtractor): | ||||
|     _PLAYLIST_SERVICE_URL = 'http://production-ps.lvp.llnw.net/r/PlaylistService/%s/%s/%s' | ||||
|     _API_URL = 'http://api.video.limelight.com/rest/organizations/%s/%s/%s/%s.json' | ||||
|  | ||||
|     @classmethod | ||||
|     def _extract_urls(cls, webpage, source_url): | ||||
|         lm = { | ||||
|             'Media': 'media', | ||||
|             'Channel': 'channel', | ||||
|             'ChannelList': 'channel_list', | ||||
|         } | ||||
|         entries = [] | ||||
|         for kind, video_id in re.findall( | ||||
|                 r'LimelightPlayer\.doLoad(Media|Channel|ChannelList)\(["\'](?P<id>[a-z0-9]{32})', | ||||
|                 webpage): | ||||
|             print('video_id', video_id) | ||||
|             entries.append(cls.url_result( | ||||
|                 smuggle_url( | ||||
|                     'limelight:%s:%s' % (lm[kind], video_id), | ||||
|                     {'source_url': source_url}), | ||||
|                 'Limelight%s' % kind, video_id)) | ||||
|         for mobj in re.finditer( | ||||
|                 # As per [1] class attribute should be exactly equal to | ||||
|                 # LimelightEmbeddedPlayerFlash but numerous examples seen | ||||
|                 # that don't exactly match it (e.g. [2]). | ||||
|                 # 1. http://support.3playmedia.com/hc/en-us/articles/227732408-Limelight-Embedding-the-Captions-Plugin-with-the-Limelight-Player-on-Your-Webpage | ||||
|                 # 2. http://www.sedona.com/FacilitatorTraining2017 | ||||
|                 r'''(?sx) | ||||
|                     <object[^>]+class=(["\'])(?:(?!\1).)*\bLimelightEmbeddedPlayerFlash\b(?:(?!\1).)*\1[^>]*>.*? | ||||
|                         <param[^>]+ | ||||
|                             name=(["\'])flashVars\2[^>]+ | ||||
|                             value=(["\'])(?:(?!\3).)*mediaId=(?P<id>[a-z0-9]{32}) | ||||
|                 ''', webpage): | ||||
|             entries.append(cls.url_result( | ||||
|                 smuggle_url( | ||||
|                     'limelight:media:%s' % mobj.group('id'), | ||||
|                     {'source_url': source_url}), | ||||
|                 'LimelightMedia', mobj.group('id'))) | ||||
|         return entries | ||||
|  | ||||
|     def _call_playlist_service(self, item_id, method, fatal=True, referer=None): | ||||
|         headers = {} | ||||
|         if referer: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user