|
|
@ -8,7 +8,7 @@ from ..utils import int_or_none
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class JWPlatformBaseIE(InfoExtractor):
|
|
|
|
class JWPlatformBaseIE(InfoExtractor):
|
|
|
|
def _parse_jwplayer_data(self, jwplayer_data, video_id):
|
|
|
|
def _parse_jwplayer_data(self, jwplayer_data, video_id, require_title=True):
|
|
|
|
video_data = jwplayer_data['playlist'][0]
|
|
|
|
video_data = jwplayer_data['playlist'][0]
|
|
|
|
subtitles = {}
|
|
|
|
subtitles = {}
|
|
|
|
for track in video_data['tracks']:
|
|
|
|
for track in video_data['tracks']:
|
|
|
@ -19,7 +19,7 @@ class JWPlatformBaseIE(InfoExtractor):
|
|
|
|
for source in video_data['sources']:
|
|
|
|
for source in video_data['sources']:
|
|
|
|
source_url = self._proto_relative_url(source['file'])
|
|
|
|
source_url = self._proto_relative_url(source['file'])
|
|
|
|
source_type = source.get('type') or ''
|
|
|
|
source_type = source.get('type') or ''
|
|
|
|
if source_type == 'application/vnd.apple.mpegurl':
|
|
|
|
if source_type in ('application/vnd.apple.mpegurl', 'hls'):
|
|
|
|
formats.extend(self._extract_m3u8_formats(
|
|
|
|
formats.extend(self._extract_m3u8_formats(
|
|
|
|
source_url, video_id, 'mp4', 'm3u8_native', fatal=False))
|
|
|
|
source_url, video_id, 'mp4', 'm3u8_native', fatal=False))
|
|
|
|
elif source_type.startswith('audio'):
|
|
|
|
elif source_type.startswith('audio'):
|
|
|
@ -37,7 +37,7 @@ class JWPlatformBaseIE(InfoExtractor):
|
|
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
'id': video_id,
|
|
|
|
'id': video_id,
|
|
|
|
'title': video_data['title'],
|
|
|
|
'title': video_data['title'] if require_title else video_data.get('title'),
|
|
|
|
'description': video_data.get('description'),
|
|
|
|
'description': video_data.get('description'),
|
|
|
|
'thumbnail': self._proto_relative_url(video_data.get('image')),
|
|
|
|
'thumbnail': self._proto_relative_url(video_data.get('image')),
|
|
|
|
'timestamp': int_or_none(video_data.get('pubdate')),
|
|
|
|
'timestamp': int_or_none(video_data.get('pubdate')),
|
|
|
|