diff options
author | Sergey M․ <dstftw@gmail.com> | 2017-10-12 00:41:20 +0700 |
---|---|---|
committer | Sergey M․ <dstftw@gmail.com> | 2017-10-12 00:41:20 +0700 |
commit | 694b61545cc3fa37c31d5f62d26101fb2620a01d (patch) | |
tree | d349c3bf03eab7acf82b56876c8435e85364e8ea /youtube_dl | |
parent | af0f74288dc1b46147bc8f6b5692d2a21c6e178b (diff) |
[nexx] Add support for shortcuts and relax domain id extraction
Diffstat (limited to 'youtube_dl')
-rw-r--r-- | youtube_dl/extractor/nexx.py | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/youtube_dl/extractor/nexx.py b/youtube_dl/extractor/nexx.py index d0235fdfe..071879ba4 100644 --- a/youtube_dl/extractor/nexx.py +++ b/youtube_dl/extractor/nexx.py @@ -18,7 +18,13 @@ from ..utils import ( class NexxIE(InfoExtractor): - _VALID_URL = r'https?://api\.nexx(?:\.cloud|cdn\.com)/v3/(?P<domain_id>\d+)/videos/byid/(?P<id>\d+)' + _VALID_URL = r'''(?x) + (?: + https?://api\.nexx(?:\.cloud|cdn\.com)/v3/(?P<domain_id>\d+)/videos/byid/| + nexx:(?P<domain_id_s>\d+): + ) + (?P<id>\d+) + ''' _TESTS = [{ # movie 'url': 'https://api.nexx.cloud/v3/748/videos/byid/128907', @@ -62,9 +68,19 @@ class NexxIE(InfoExtractor): }, { 'url': 'https://api.nexxcdn.com/v3/748/videos/byid/128907', 'only_matching': True, + }, { + 'url': 'nexx:748:128907', + 'only_matching': True, }] @staticmethod + def _extract_domain_id(webpage): + mobj = re.search( + r'<script\b[^>]+\bsrc=["\'](?:https?:)?//require\.nexx(?:\.cloud|cdn\.com)/(?P<id>\d+)', + webpage) + return mobj.group('id') if mobj else None + + @staticmethod def _extract_urls(webpage): # Reference: # 1. https://nx-s.akamaized.net/files/201510/44.pdf @@ -72,11 +88,8 @@ class NexxIE(InfoExtractor): entries = [] # JavaScript Integration - mobj = re.search( - r'<script\b[^>]+\bsrc=["\']https?://require\.nexx(?:\.cloud|cdn\.com)/(?P<id>\d+)', - webpage) - if mobj: - domain_id = mobj.group('id') + domain_id = NexxIE._extract_domain_id(webpage) + if domain_id: for video_id in re.findall( r'(?is)onPLAYReady.+?_play\.init\s*\(.+?\s*,\s*["\']?(\d+)', webpage): @@ -112,7 +125,8 @@ class NexxIE(InfoExtractor): def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) - domain_id, video_id = mobj.group('domain_id', 'id') + domain_id = mobj.group('domain_id') or mobj.group('domain_id_s') + video_id = mobj.group('id') # Reverse engineered from JS code (see getDeviceID function) device_id = '%d:%d:%d%d' % ( |