无法使用 youtube-dl 下载视频(“sig error”),如何纠正?

无法使用 youtube-dl 下载视频(“sig error”),如何纠正?

我曾经使用 youtube-dl 命令行工具下载视频,过去两天,每当我尝试下载任何视频时,都会收到如下所示的错误。

$ youtube-dl https://www.youtube.com/watch?v=bFew8mgQJ9o
[youtube] Setting language
[youtube] bFew8mgQJ9o: Downloading video webpage
[youtube] bFew8mgQJ9o: Downloading video info webpage
[youtube] bFew8mgQJ9o: 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'

这是怎么回事?

答案1

遇到了完全一样的问题。

通过以下方式更新 youtube-dl:

sudo youtube-dl -U

通过 sudo 运行 youtube-dl

sudo youtube-dl 它会通知他们已经更改了发行版,需要更新。按回车键,一切就绪。

答案2

您需要先导出代理设置,然后才能使用youtube-dl它从 YouTube 下载视频。为此,请使用以下方法导出代理设置:

export http_proxy=http://username:password@host:port_no/
export https_proxy=https://username:password@host:port_no/
export HTTP_PROXY=http://username:password@host:port_no/
export HTTPS_PROXY=https://username:password@host:port_no/

用以下代码替换用户名、密码、主机名和端口号你的相应的变量。请记住将用户名或密码中的任何特殊字符(如果有)替换为其 HTML 代码。如果没有用户名和密码,请忽略它们并将其导出为:

export HTTP_PROXY=http://host:port_no/

ETC。

例如:

export HTTP_PROXY=http://123431212:[email protected]:3128/

您还可以将其写入您的~/.bashrc文件中,以避免在将来的会话中一遍又一遍地写入它们。

完成此操作后,重新尝试下载视频。

答案3

当我尝试使用 sudo 升级时,如另一个答案所示:

sudo youtube-dl -U

我收到一条消息,说 youtube-dl 已使用包管理器安装,我应该使用相同的包管理器来升级它。但我已经完成了

sudo easy_install -U youtube-dl

最后,只需使用 sudo 运行它就可以了。

sudo youtube-dl

答案4

youtube-dl从命令行安装sudo apt-get install youtube-dl,然后使用:

sudo youtube-dl "https://www.youtube.com/watch?v=bFew8mgQJ9o"

确保sudo在上述命令之前使用!

相关内容