diff options
| -rw-r--r-- | youtube_dl/extractor/vimeo.py | 18 | 
1 files changed, 13 insertions, 5 deletions
| diff --git a/youtube_dl/extractor/vimeo.py b/youtube_dl/extractor/vimeo.py index 15cd06268..bd2663fe0 100644 --- a/youtube_dl/extractor/vimeo.py +++ b/youtube_dl/extractor/vimeo.py @@ -226,10 +226,12 @@ class VimeoBaseInfoExtractor(InfoExtractor):              'is_live': is_live,          } -    def _extract_original_format(self, url, video_id): +    def _extract_original_format(self, url, video_id, unlisted_hash=None): +        query = {'action': 'load_download_config'} +        if unlisted_hash: +            query['unlisted_hash'] = unlisted_hash          download_data = self._download_json( -            url, video_id, fatal=False, -            query={'action': 'load_download_config'}, +            url, video_id, fatal=False, query=query,              headers={'X-Requested-With': 'XMLHttpRequest'})          if download_data:              source_file = download_data.get('source_file') @@ -509,6 +511,11 @@ class VimeoIE(VimeoBaseInfoExtractor):          {              'url': 'https://vimeo.com/160743502/abd0e13fb4',              'only_matching': True, +        }, +        { +            # requires passing unlisted_hash(a52724358e) to load_download_config request +            'url': 'https://vimeo.com/392479337/a52724358e', +            'only_matching': True,          }          # https://gettingthingsdone.com/workflowmap/          # vimeo embed with check-password page protected by Referer header @@ -673,7 +680,8 @@ class VimeoIE(VimeoBaseInfoExtractor):              if config.get('view') == 4:                  config = self._verify_player_video_password(redirect_url, video_id, headers) -        vod = config.get('video', {}).get('vod', {}) +        video = config.get('video') or {} +        vod = video.get('vod') or {}          def is_rented():              if '>You rented this title.<' in webpage: @@ -733,7 +741,7 @@ class VimeoIE(VimeoBaseInfoExtractor):          formats = []          source_format = self._extract_original_format( -            'https://vimeo.com/' + video_id, video_id) +            'https://vimeo.com/' + video_id, video_id, video.get('unlisted_hash'))          if source_format:              formats.append(source_format) | 
