[limelight] Improve embeds detection (closes #13895)

This commit is contained in:
Sergey M․ 2017-08-13 00:58:39 +07:00
parent 0c43a481b9
commit 4ef9152428
No known key found for this signature in database
GPG Key ID: 2C393E0F18A9236D

View File

@ -26,14 +26,16 @@ def _extract_urls(cls, webpage, source_url):
'Channel': 'channel', 'Channel': 'channel',
'ChannelList': 'channel_list', 'ChannelList': 'channel_list',
} }
def smuggle(url):
return smuggle_url(url, {'source_url': source_url})
entries = [] entries = []
for kind, video_id in re.findall( for kind, video_id in re.findall(
r'LimelightPlayer\.doLoad(Media|Channel|ChannelList)\(["\'](?P<id>[a-z0-9]{32})', r'LimelightPlayer\.doLoad(Media|Channel|ChannelList)\(["\'](?P<id>[a-z0-9]{32})',
webpage): webpage):
entries.append(cls.url_result( entries.append(cls.url_result(
smuggle_url( smuggle('limelight:%s:%s' % (lm[kind], video_id)),
'limelight:%s:%s' % (lm[kind], video_id),
{'source_url': source_url}),
'Limelight%s' % kind, video_id)) 'Limelight%s' % kind, video_id))
for mobj in re.finditer( for mobj in re.finditer(
# As per [1] class attribute should be exactly equal to # As per [1] class attribute should be exactly equal to
@ -49,10 +51,15 @@ def _extract_urls(cls, webpage, source_url):
''', webpage): ''', webpage):
kind, video_id = mobj.group('kind'), mobj.group('id') kind, video_id = mobj.group('kind'), mobj.group('id')
entries.append(cls.url_result( entries.append(cls.url_result(
smuggle_url( smuggle('limelight:%s:%s' % (kind, video_id)),
'limelight:%s:%s' % (kind, video_id),
{'source_url': source_url}),
'Limelight%s' % kind.capitalize(), video_id)) 'Limelight%s' % kind.capitalize(), video_id))
# http://support.3playmedia.com/hc/en-us/articles/115009517327-Limelight-Embedding-the-Audio-Description-Plugin-with-the-Limelight-Player-on-Your-Web-Page)
for video_id in re.findall(
r'(?s)LimelightPlayerUtil\.embed\s*\(\s*{.*?\bmediaId["\']\s*:\s*["\'](?P<id>[a-z0-9]{32})',
webpage):
entries.append(cls.url_result(
smuggle('limelight:media:%s' % video_id),
LimelightMediaIE.ie_key(), video_id))
return entries return entries
def _call_playlist_service(self, item_id, method, fatal=True, referer=None): def _call_playlist_service(self, item_id, method, fatal=True, referer=None):