youtube-dl 停止工作

syd*_*eat 9 video youtube youtube-dl

在我的 12.04 LTS 上,我无法通过 youtube-dl 从 YouTube 下载。我曾经这样做过,但最近(一周)我不能。我尝试了很多视频,但得到了相同的输出:

$ youtube-dl -t http://www.youtube.com/watch?v=Sh0ciyuXbJA
[youtube] Setting language
[youtube] Sh0ciyuXbJA: Downloading video webpage
[youtube] Sh0ciyuXbJA: Downloading video info webpage
[youtube] Sh0ciyuXbJA: Extracting video information
Traceback (most recent call last):
  File "/usr/bin/youtube-dl", line 4645, in <module>
    main()
  File "/usr/bin/youtube-dl", line 4636, in main
    _real_main()
  File "/usr/bin/youtube-dl", line 4620, in _real_main
    retcode = fd.download(all_urls)
  File "/usr/bin/youtube-dl", line 869, in download
    ie.extract(url)
  File "/usr/bin/youtube-dl", line 1135, in extract
    return self._real_extract(url)
  File "/usr/bin/youtube-dl", line 1406, in _real_extract
    url_map = dict((ud['itag'][0], ud['url'][0] + '&signature=' + ud['sig'][0]) for ud in url_data)
  File "/usr/bin/youtube-dl", line 1406, in <genexpr>
    url_map = dict((ud['itag'][0], ud['url'][0] + '&signature=' + ud['sig'][0]) for ud in url_data)
KeyError: 'sig'
Run Code Online (Sandbox Code Playgroud)

这似乎是一些签名问题。我仍然可以通过 vlc 下载视频。但我喜欢 youtube-dl - 它更快。我已经做了:

sudo apt-get --purge remove youtube-dl
sudo apt-get install youtube-dl
sudo youtube-dl --update
Run Code Online (Sandbox Code Playgroud)

......但它没有帮助。

MrV*_*dji 11

Youtube 更新了他的反下载安全系统非常令人反感。您应该保持youtube-dl最新状态。Ubuntu 12.04 Precis 默认安装的版本是 2012.02.27(两年前)。

您可以订阅WebUpd8 PPA以在新版本发布时获取新版本(即每周一次或两次):

sudo add-apt-repository ppa:nilarimogard/webupd8 -y
sudo apt-get update
sudo apt-get dist-upgrade
Run Code Online (Sandbox Code Playgroud)

您还可以在该 PPA 上找到最新 youtube-dl 版本的 .deb 包(在此处搜索 youtube-dl)。使用 GUI 工具(如gdebiUbuntu 软件中心)或以下命令行安装它:

cd directory/where/you/downloaded/the/package
dpkg -i youtube-dl*
sudo apt-get install -f
Run Code Online (Sandbox Code Playgroud)

  • 这不是“错误”,它是旧的^^ 因为他们几乎每周更新一次,所以他们不会在 repo 中保留每个快照。在 PPA 链接上,您将找到 .deb 的所有新版本。但是感谢您的通知,我用一种应该绕了很长时间的方式更新了答案(链接到 PPA 中的“存档”路径,如果您不想安装 PPA,可以手动获取最新版本) (2认同)