Я использовал для загрузки видео с помощью инструмента командной строки 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'
что происходит?
Имел точно ту же проблему.
Обновленный youtube-dl через:
sudo youtube-dl -U
youtube-dl Выполнения через sudo
sudo youtube-dl
и это сообщит, что они изменили распределение и потребность обновить. Нажмите Enter, и необходимо быть хорошими для движения.
Необходимо экспортировать настройки прокси, прежде чем можно будет использовать 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/
Замените имя пользователя, пароль, хост и port_no с Вашими соответствующими переменными. Не забудьте заменять любые специальные символы, если таковые имеются, в Вашем имени пользователя или пароле с их HTML-кодами. Проигнорируйте имя пользователя и пароль, если Вы не имеете один и экспортируете их как:
export HTTP_PROXY=http://host:port_no/
и т.д.
Поскольку исключая:
export HTTP_PROXY=http://123431212:mypassword@192.168.1.2:3128/
Можно также записать это в Ваш ~/.bashrc
файл, чтобы не писать им снова и снова для будущих сессий.
Повторите видео загрузки после выполнения этого.
Когда я пытался обновить с sudo, как обозначено в другом ответе:
sudo youtube-dl -U
я получил сообщение, говоря, что youtube-dl был установлен с помощью диспетчера пакетов, и я должен использовать то же для обновления его. Но я уже сделал
sudo easy_install -U youtube-dl
В конце, просто использование sudo для выполнения его работало.
sudo youtube-dl
Установка youtube-dl
с sudo apt-get install youtube-dl
от командной строки, затем используйте:
sudo youtube-dl "https://www.youtube.com/watch?v=bFew8mgQJ9o"
Удостоверяются, который Вы используете sudo
перед вышеупомянутой командой!