-class NBAIE(InfoExtractor):
- _VALID_URL = r'https?://(?:watch\.|www\.)?nba\.com/(?:nba/)?video(?P<id>/[^?]*?)/?(?:/index\.html)?(?:\?.*)?$'
+class NBABaseIE(InfoExtractor):
+ def _get_formats(self, video_id):
+ base_url = 'http://nba.cdn.turner.com/nba/big%s' % video_id
+ return [{
+ 'url': base_url + '_nba_android_high.mp4',
+ 'width': 480,
+ 'height': 320,
+ 'format_id': '320p',
+ },{
+ 'url': base_url + '_640x360_664b.mp4',
+ 'width': 640,
+ 'height': 360,
+ 'format_id': '360p',
+ },{
+ 'url': base_url + '_768x432_1404.mp4',
+ 'width': 768,
+ 'height': 432,
+ 'format_id': '432p',
+ },{
+ 'url': base_url + '_1280x720.mp4',
+ 'width': 1280,
+ 'height': 720,
+ 'format_id': '720p',
+ }]
+
+ def _real_extract(self, url):
+ video_id = self._match_id(url)
+ webpage = self._download_webpage(url, video_id)
+ ret = self._extract_metadata(webpage, video_id)
+ ret['id'] = video_id.rpartition('/')[2]
+ ret['formats'] = self._get_formats(video_id)
+ return ret
+
+
+class NBAIE(NBABaseIE):
+ IE_NAME = 'nba'
+ _VALID_URL = r'https?://(?:www\.)?nba\.com/(?:nba/)?video(?P<id>/[^?]*?)/?(?:/index\.html)?(?:\?.*)?$'