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

ker*_*nic 12 python youtube-dl

我曾经使用 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'
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?

小智 20

有完全相同的问题。

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

sudo youtube-dl -U
Run Code Online (Sandbox Code Playgroud)

通过 sudo 运行 youtube-dl

sudo youtube-dl 它会通知他们已经更改了分发并需要更新。按回车键,你应该可以开始了。


job*_*bin 1

您需要先导出代理设置,然后才能用于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/
Run Code Online (Sandbox Code Playgroud)

将用户名、密码、主机和 port_no 替换为各自的变量。请记住将用户名或密码中的任何特殊字符(如果有)替换为 HTML 代码。如果您没有用户名和密码,请忽略用户名和密码,并将其导出为:

export HTTP_PROXY=http://host:port_no/
Run Code Online (Sandbox Code Playgroud)

ETC。

例如:

export HTTP_PROXY=http://123431212:mypassword@192.168.1.2:3128/
Run Code Online (Sandbox Code Playgroud)

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

执行此操作后重新尝试下载视频。