aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom-Oliver Heidel <github@tom-oliver.eu>2020-11-11 00:08:18 +0100
committerGitHub <noreply@github.com>2020-11-11 00:08:18 +0100
commit7ee5015a348c35e242e6e88338e89a5775d70e2a (patch)
tree51136bf38be794fa3c8d4ce72495b87b3d25afb7
parent00c38ef28dad5abc8c32b7084f215f1aacc61292 (diff)
parent142f2c8e99e61054d3354bd915a9e46cbd80c8ea (diff)
downloadhypervideo-pre-7ee5015a348c35e242e6e88338e89a5775d70e2a.tar.lz
hypervideo-pre-7ee5015a348c35e242e6e88338e89a5775d70e2a.tar.xz
hypervideo-pre-7ee5015a348c35e242e6e88338e89a5775d70e2a.zip
Merge pull request #149 from RobinD42/fix-subtitle-fallback
fall-back to the old way to fetch subtitles, if needed
-rw-r--r--youtube_dlc/extractor/viki.py29
1 files changed, 19 insertions, 10 deletions
diff --git a/youtube_dlc/extractor/viki.py b/youtube_dlc/extractor/viki.py
index 0f188f84d..6bddf8be9 100644
--- a/youtube_dlc/extractor/viki.py
+++ b/youtube_dlc/extractor/viki.py
@@ -308,17 +308,26 @@ class VikiIE(VikiBaseIE):
'url': thumbnail.get('url'),
})
- new_video = self._download_json(
- 'https://www.viki.com/api/videos/%s' % video_id, video_id,
- 'Downloading new video JSON to get subtitles', headers={'x-viki-app-ver': '2.2.5.1428709186'}, expected_status=[200, 400, 404])
-
subtitles = {}
- for sub in new_video.get('streamSubtitles').get('dash'):
- subtitles[sub.get('srclang')] = [{
- 'ext': 'vtt',
- 'url': sub.get('src'),
- 'completion': sub.get('percentage'),
- }]
+ try:
+ # New way to fetch subtitles
+ new_video = self._download_json(
+ 'https://www.viki.com/api/videos/%s' % video_id, video_id,
+ 'Downloading new video JSON to get subtitles', headers={'x-viki-app-ver': '2.2.5.1428709186'}, expected_status=[200, 400, 404])
+ for sub in new_video.get('streamSubtitles').get('dash'):
+ subtitles[sub.get('srclang')] = [{
+ 'ext': 'vtt',
+ 'url': sub.get('src'),
+ 'completion': sub.get('percentage'),
+ }]
+ except AttributeError:
+ # fall-back to the old way if there isn't a streamSubtitles attribute
+ for subtitle_lang, _ in video.get('subtitle_completions', {}).items():
+ subtitles[subtitle_lang] = [{
+ 'ext': subtitles_format,
+ 'url': self._prepare_call(
+ 'videos/%s/subtitles/%s.%s' % (video_id, subtitle_lang, subtitles_format)),
+ } for subtitles_format in ('srt', 'vtt')]
result = {
'id': video_id,