Неможливо завантажити відео за допомогою youtube-dl ("sig error"), як виправити?


12

За останні два дні я завантажував відео за допомогою інструменту командного рядка 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'

що відбувається?


Ви за проксі-сервером?
jobin

так, належить до тієї установи, де я навчаюсь, і доступу до Інтернету.
kernel_panic

Чи була відповідь корисною?
приєднатися

Відповіді:


20

Була точно така ж проблема.

Оновлено youtube-dl через:

sudo youtube-dl -U

Запустіть youtube-dl через sudo

sudo youtube-dl і він повідомить, що вони змінили розповсюдження та потребують оновлення. Натисніть клавішу Enter, і вам слід добре поїхати.


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/

Замінити ім'я користувача, пароль, хост і port_no з вашими відповідними змінними. Не забудьте замінити будь-які спеціальні символи, якщо вони є, у вашому імені користувача або паролі на їх HTML-коди. Ігноруйте ім’я користувача та пароль, якщо у вас його немає, і експортуйте їх як:

export HTTP_PROXY=http://host:port_no/

тощо.

Наприклад:

export HTTP_PROXY=http://123431212:mypassword@192.168.1.2:3128/

Ви також можете записати це у свій ~/.bashrcфайл, щоб не писати їх знову і знову для майбутніх сесій.

Повторіть завантаження відео після цього.


1

Коли я спробував оновити sudo, як зазначено в іншій відповіді:

sudo youtube-dl -U

Мені надійшло повідомлення про те, що youtube-dl був встановлений за допомогою менеджера пакунків, і мені слід використовувати те саме, щоб оновити його. Але я вже зробив

sudo easy_install -U youtube-dl

Зрештою, просто використовувати судо, щоб запустити це спрацювало.

sudo youtube-dl

-1

Встановити youtube-dlз sudo apt-get install youtube-dlкомандного рядка, а потім використовувати:

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

Переконайтеся, що ви використовуєте sudoперед вищевказаною командою!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.