|
@@ -210,18 +210,26 @@ query viewClip {
|
|
|
|
|
|
raise ExtractorError('Unable to log in')
|
|
|
|
|
|
- def _get_subtitles(self, author, clip_idx, lang, name, duration, video_id):
|
|
|
- captions_post = {
|
|
|
- 'a': author,
|
|
|
- 'cn': int(clip_idx),
|
|
|
- 'lc': lang,
|
|
|
- 'm': name,
|
|
|
- }
|
|
|
- captions = self._download_json(
|
|
|
- '%s/player/retrieve-captions' % self._API_BASE, video_id,
|
|
|
- 'Downloading captions JSON', 'Unable to download captions JSON',
|
|
|
- fatal=False, data=json.dumps(captions_post).encode('utf-8'),
|
|
|
- headers={'Content-Type': 'application/json;charset=utf-8'})
|
|
|
+ def _get_subtitles(self, author, clip_idx, clip_id, lang, name, duration, video_id):
|
|
|
+ captions = None
|
|
|
+ if clip_id:
|
|
|
+ captions = self._download_json(
|
|
|
+ '%s/transcript/api/v1/caption/json/%s/%s'
|
|
|
+ % (self._API_BASE, clip_id, lang), video_id,
|
|
|
+ 'Downloading captions JSON', 'Unable to download captions JSON',
|
|
|
+ fatal=False)
|
|
|
+ if not captions:
|
|
|
+ captions_post = {
|
|
|
+ 'a': author,
|
|
|
+ 'cn': int(clip_idx),
|
|
|
+ 'lc': lang,
|
|
|
+ 'm': name,
|
|
|
+ }
|
|
|
+ captions = self._download_json(
|
|
|
+ '%s/player/retrieve-captions' % self._API_BASE, video_id,
|
|
|
+ 'Downloading captions JSON', 'Unable to download captions JSON',
|
|
|
+ fatal=False, data=json.dumps(captions_post).encode('utf-8'),
|
|
|
+ headers={'Content-Type': 'application/json;charset=utf-8'})
|
|
|
if captions:
|
|
|
return {
|
|
|
lang: [{
|
|
@@ -413,7 +421,7 @@ query viewClip {
|
|
|
|
|
|
# TODO: other languages?
|
|
|
subtitles = self.extract_subtitles(
|
|
|
- author, clip_idx, 'en', name, duration, display_id)
|
|
|
+ author, clip_idx, clip.get('clipId'), 'en', name, duration, display_id)
|
|
|
|
|
|
return {
|
|
|
'id': clip_id,
|