diff options
author | Tom-Oliver Heidel <github@tom-oliver.eu> | 2020-11-11 00:08:18 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-11 00:08:18 +0100 |
commit | 7ee5015a348c35e242e6e88338e89a5775d70e2a (patch) | |
tree | 51136bf38be794fa3c8d4ce72495b87b3d25afb7 | |
parent | 00c38ef28dad5abc8c32b7084f215f1aacc61292 (diff) | |
parent | 142f2c8e99e61054d3354bd915a9e46cbd80c8ea (diff) | |
download | hypervideo-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.py | 29 |
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, |