[jwplatform] Use js_to_json to detect more JWPlayers

This commit is contained in:
Yen Chi Hsuan 2016-09-17 18:45:08 +08:00
parent c51a7f0b2f
commit e14c82bd6b
No known key found for this signature in database
GPG key ID: 3FDDD575826C5C30
2 changed files with 10 additions and 2 deletions

View file

@ -1,3 +1,9 @@
version <unreleased>
Extractors
* [jwplatform] Improve JWPlayer detection
version 2016.09.15 version 2016.09.15
Core Core

View file

@ -9,6 +9,7 @@
determine_ext, determine_ext,
float_or_none, float_or_none,
int_or_none, int_or_none,
js_to_json,
mimetype2ext, mimetype2ext,
) )
@ -19,14 +20,15 @@ def _find_jwplayer_data(webpage):
# TODO: Merge this with JWPlayer-related codes in generic.py # TODO: Merge this with JWPlayer-related codes in generic.py
mobj = re.search( mobj = re.search(
'jwplayer\((?P<quote>[\'"])[^\'" ]+(?P=quote)\)\.setup\((?P<options>[^)]+)\)', r'jwplayer\((?P<quote>[\'"])[^\'" ]+(?P=quote)\)\.setup\s*\((?P<options>[^)]+)\)',
webpage) webpage)
if mobj: if mobj:
return mobj.group('options') return mobj.group('options')
def _extract_jwplayer_data(self, webpage, video_id, *args, **kwargs): def _extract_jwplayer_data(self, webpage, video_id, *args, **kwargs):
jwplayer_data = self._parse_json( jwplayer_data = self._parse_json(
self._find_jwplayer_data(webpage), video_id) self._find_jwplayer_data(webpage), video_id,
transform_source=js_to_json)
return self._parse_jwplayer_data( return self._parse_jwplayer_data(
jwplayer_data, video_id, *args, **kwargs) jwplayer_data, video_id, *args, **kwargs)