ytdl-org / youtube-dl

Command-line program to download videos from YouTube.com and other video sites
http://ytdl-org.github.io/youtube-dl/
The Unlicense
130.32k stars 9.84k forks source link

Vimeo embedded link fails with Error: no suitable InfoExtractor for URL #29380

Open someziggyman opened 3 years ago

someziggyman commented 3 years ago

Checklist

Verbose log

youtube-dl -F -v https://vimeo.com/event/1023598/embed/ff6cf5dd25
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'-F', u'-v', u'https://vimeo.com/event/1023598/embed/ff6cf5dd25']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2021.06.06
[debug] Python version 2.7.16 (CPython) - Darwin-20.5.0-x86_64-i386-64bit
[debug] exe versions: none
[debug] Proxy map: {}
[generic] ff6cf5dd25: Requesting header
WARNING: Falling back on generic information extractor.
[generic] ff6cf5dd25: Downloading webpage
[generic] ff6cf5dd25: Extracting information
[download] Downloading playlist: Quantitative Experimental Approaches in Microbial Evolution and Ecology on Vimeo
[generic] playlist Quantitative Experimental Approaches in Microbial Evolution and Ecology on Vimeo: Collected 1 video ids (downloading 1 of them)
[download] Downloading video 1 of 1
ERROR: no suitable InfoExtractor for URL https://player.vimeo.com/video/555011351/fallback?noscript#__youtubedl_smuggle=%7B%22http_headers%22%3A+%7B%22Referer%22%3A+%22https%3A%2F%2Fvimeo.com%2Fevent%2F1023598%2Fembed%2Fff6cf5dd25%22%7D%7D
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/usr/local/bin/youtube-dl/__main__.py", line 19, in <module>
    youtube_dl.main()
  File "/usr/local/bin/youtube-dl/youtube_dl/__init__.py", line 475, in main
    _real_main(argv)
  File "/usr/local/bin/youtube-dl/youtube_dl/__init__.py", line 465, in _real_main
    retcode = ydl.download(all_urls)
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 2069, in download
    url, force_generic_extractor=self.params.get('force_generic_extractor', False))
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 808, in extract_info
    return self.__extract_info(url, ie, download, extra_info, process)
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 815, in wrapper
    return func(self, *args, **kwargs)
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 847, in __extract_info
    return self.process_ie_result(ie_result, download, extra_info)
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 933, in process_ie_result
    return self.__process_playlist(ie_result, download)
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 1067, in __process_playlist
    entry_result = self.__process_iterable_entry(entry, download, extra)
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 815, in wrapper
    return func(self, *args, **kwargs)
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 1077, in __process_iterable_entry
    entry, download=download, extra_info=extra_info)
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 888, in process_ie_result
    extra_info=extra_info)
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 810, in extract_info
    self.report_error('no suitable InfoExtractor for URL %s' % url)
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 628, in report_error
    self.trouble(error_message, tb)
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 590, in trouble
    tb_data = traceback.format_list(traceback.extract_stack())

Description

Test link: https://vimeo.com/event/1023598/embed/ff6cf5dd25

Maybe regex needs to be relaxed or maybe link format is different from the embeds already supported.

Originally that video is hosted on https://event.worldmicrobeforum.org/ and requires log in (can't share unfortunately). At the same time was able to extract the link above and it's playable in any browser without login, cookies or referrer url. I guess it can be downloaded directly.

dirkf commented 3 years ago

When you study the page loaded from the embed link, you see that it fetches some JSON from this URL: https://player.vimeo.com/video/555011351/config with a whole stack of parameters. The id 555011351 doesn't correspond to a playable video (404) although a URL using that id is the JSON's .video.shareURL.

The JSON fields .request.files.progressive[i].url (i=0..4) name direct mp4 URLs of various resolutions; the .request.files.dash and .request.files.hls objects deserve further study.

The id is found in the div.player element of the page as the value of its data-config-url attribute in the URL https://player.vimeo.com/video/555011351. That URL is understood by yt-dl (presumably using the JSON as above).