From 748ec6672533d80881475186ed292caea9f8e8c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergey=20M=E2=80=A4?= Date: Wed, 17 Dec 2014 20:20:40 +0600 Subject: [PATCH] [theplatform] Extract captions (Closes #4495) --- youtube_dl/extractor/theplatform.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/theplatform.py b/youtube_dl/extractor/theplatform.py index af6ef0033a..110ed976de 100644 --- a/youtube_dl/extractor/theplatform.py +++ b/youtube_dl/extractor/theplatform.py @@ -3,7 +3,7 @@ import re import json -from .common import InfoExtractor +from .subtitles import SubtitlesInfoExtractor from ..compat import ( compat_str, ) @@ -16,7 +16,7 @@ _x = lambda p: xpath_with_ns(p, {'smil': 'http://www.w3.org/2005/SMIL21/Language'}) -class ThePlatformIE(InfoExtractor): +class ThePlatformIE(SubtitlesInfoExtractor): _VALID_URL = r'''(?x) (?:https?://(?:link|player)\.theplatform\.com/[sp]/[^/]+/ (?P(?:[^/\?]+/(?:swf|config)|onsite)/select/)? @@ -66,6 +66,20 @@ def _real_extract(self, url): info_json = self._download_webpage(info_url, video_id) info = json.loads(info_json) + subtitles = {} + captions = info.get('captions') + if isinstance(captions, list): + for caption in captions: + lang, src = caption.get('lang'), caption.get('src') + if lang and src: + subtitles[lang] = src + + if self._downloader.params.get('listsubtitles', False): + self._list_available_subtitles(video_id, subtitles) + return + + subtitles = self.extract_subtitles(video_id, subtitles) + head = meta.find(_x('smil:head')) body = meta.find(_x('smil:body')) @@ -117,6 +131,7 @@ def _real_extract(self, url): return { 'id': video_id, 'title': info['title'], + 'subtitles': subtitles, 'formats': formats, 'description': info['description'], 'thumbnail': info['defaultThumbnailUrl'],