diff options
| -rw-r--r-- | youtube_dl/extractor/vimeo.py | 13 | 
1 files changed, 12 insertions, 1 deletions
| diff --git a/youtube_dl/extractor/vimeo.py b/youtube_dl/extractor/vimeo.py index d404498aa..a41178bab 100644 --- a/youtube_dl/extractor/vimeo.py +++ b/youtube_dl/extractor/vimeo.py @@ -110,7 +110,8 @@ class VimeoBaseInfoExtractor(InfoExtractor):      def _parse_config(self, config, video_id):          video_data = config['video']          video_title = video_data['title'] -        is_live = try_get(video_data, lambda x: x['live_event']['status']) == 'started' +        live_event = video_data.get('live_event') or {} +        is_live = live_event.get('status') == 'started'          formats = []          config_files = video_data.get('files') or config['request'].get('files', {}) @@ -127,6 +128,7 @@ class VimeoBaseInfoExtractor(InfoExtractor):                  'tbr': int_or_none(f.get('bitrate')),              }) +        # TODO: fix handling of 308 status code returned for live archive manifest requests          for files_type in ('hls', 'dash'):              for cdn_name, cdn_data in config_files.get(files_type, {}).get('cdns', {}).items():                  manifest_url = cdn_data.get('url') @@ -164,6 +166,15 @@ class VimeoBaseInfoExtractor(InfoExtractor):                                  f['preference'] = -40                          formats.extend(mpd_formats) +        live_archive = live_event.get('archive') or {} +        live_archive_source_url = live_archive.get('source_url') +        if live_archive_source_url and live_archive.get('status') == 'done': +            formats.append({ +                'format_id': 'live-archive-source', +                'url': live_archive_source_url, +                'preference': 1, +            }) +          subtitles = {}          text_tracks = config['request'].get('text_tracks')          if text_tracks: | 
