X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;ds=sidebyside;f=youtube_dl%2Fextractor%2Ftheplatform.py;h=110ed976de3d1a3a31c8c9a88cd976482f7d78ca;hb=b59c17e543206220c1809ab0fe6131280dd02b1f;hp=522a095a28757c1707baced702dfc72fbb8448d1;hpb=c1777d5cb3fb1ae48de79badfe5b8db9963999b4;p=youtube-dl diff --git a/youtube_dl/extractor/theplatform.py b/youtube_dl/extractor/theplatform.py index 522a095a2..110ed976d 100644 --- a/youtube_dl/extractor/theplatform.py +++ b/youtube_dl/extractor/theplatform.py @@ -3,9 +3,11 @@ from __future__ import unicode_literals import re import json -from .common import InfoExtractor -from ..utils import ( +from .subtitles import SubtitlesInfoExtractor +from ..compat import ( compat_str, +) +from ..utils import ( determine_ext, ExtractorError, xpath_with_ns, @@ -14,7 +16,7 @@ from ..utils import ( _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/)? @@ -47,7 +49,7 @@ class ThePlatformIE(InfoExtractor): smil_url = config['releaseUrl'] + '&format=SMIL&formats=MPEG4&manifest=f4m' else: smil_url = ('http://link.theplatform.com/s/dJ5BDC/{0}/meta.smil?' - 'format=smil&mbr=true'.format(video_id)) + 'format=smil&mbr=true'.format(video_id)) meta = self._download_xml(smil_url, video_id) try: @@ -64,6 +66,20 @@ class ThePlatformIE(InfoExtractor): 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')) @@ -115,6 +131,7 @@ class ThePlatformIE(InfoExtractor): return { 'id': video_id, 'title': info['title'], + 'subtitles': subtitles, 'formats': formats, 'description': info['description'], 'thumbnail': info['defaultThumbnailUrl'],