aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl/extractor
diff options
context:
space:
mode:
authorYen Chi Hsuan <yan12125@gmail.com>2015-08-21 01:37:43 +0800
committerYen Chi Hsuan <yan12125@gmail.com>2015-08-21 01:37:43 +0800
commitc687ac745b3c94b2fd246214e78c92a31bd9fc0f (patch)
treec97803d9238a144b597aaf2e10db5032820b0e03 /youtube_dl/extractor
parent912e0b7e46d795df3ec1866f9b0ff071cca8d550 (diff)
[theplatform] Use subtitles from SMIL, too
Diffstat (limited to 'youtube_dl/extractor')
-rw-r--r--youtube_dl/extractor/theplatform.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/youtube_dl/extractor/theplatform.py b/youtube_dl/extractor/theplatform.py
index ba05ada39..25edc3100 100644
--- a/youtube_dl/extractor/theplatform.py
+++ b/youtube_dl/extractor/theplatform.py
@@ -28,7 +28,7 @@ _x = lambda p: xpath_with_ns(p, {'smil': default_ns})
class ThePlatformBaseIE(InfoExtractor):
- def _extract_theplatform_smil_formats(self, smil_url, video_id, note='Downloading SMIL data'):
+ def _extract_theplatform_smil(self, smil_url, video_id, note='Downloading SMIL data'):
meta = self._download_xml(smil_url, video_id, note=note)
try:
error_msg = next(
@@ -54,7 +54,9 @@ class ThePlatformBaseIE(InfoExtractor):
self._sort_formats(formats)
- return formats
+ subtitles = self._parse_smil_subtitles(meta, default_ns)
+
+ return formats, subtitles
def get_metadata(self, path, video_id):
info_url = 'http://link.theplatform.com/s/%s?format=preview' % path
@@ -208,12 +210,14 @@ class ThePlatformIE(ThePlatformBaseIE):
if sig:
smil_url = self._sign_url(smil_url, sig['key'], sig['secret'])
- formats = self._extract_theplatform_smil_formats(smil_url, video_id)
+ formats, subtitles = self._extract_theplatform_smil(smil_url, video_id)
ret = self.get_metadata(path, video_id)
+ combined_subtitles = self._merge_subtitles(ret.get('subtitles', {}), subtitles)
ret.update({
'id': video_id,
'formats': formats,
+ 'subtitles': combined_subtitles,
})
return ret
@@ -251,6 +255,7 @@ class ThePlatformFeedIE(ThePlatformBaseIE):
entry = feed['entries'][0]
formats = []
+ subtitles = {}
first_video_id = None
duration = None
for item in entry['media$content']:
@@ -259,7 +264,9 @@ class ThePlatformFeedIE(ThePlatformBaseIE):
if first_video_id is None:
first_video_id = cur_video_id
duration = float_or_none(item.get('plfile$duration'))
- formats.extend(self._extract_theplatform_smil_formats(smil_url, video_id, 'Downloading SMIL data for %s' % cur_video_id))
+ cur_formats, cur_subtitles = self._extract_theplatform_smil(smil_url, video_id, 'Downloading SMIL data for %s' % cur_video_id)
+ formats.extend(cur_formats)
+ subtitles = self._merge_subtitles(subtitles, cur_subtitles)
self._sort_formats(formats)
@@ -273,9 +280,11 @@ class ThePlatformFeedIE(ThePlatformBaseIE):
categories = [item['media$name'] for item in entry.get('media$categories', [])]
ret = self.get_metadata('%s/%s' % (provider_id, first_video_id), video_id)
+ subtitles = self._merge_subtitles(subtitles, ret['subtitles'])
ret.update({
'id': video_id,
'formats': formats,
+ 'subtitles': subtitles,
'thumbnails': thumbnails,
'duration': duration,
'timestamp': timestamp,