Nie można pobrać filmów za pomocą youtube-dl („błąd sig”), jak to naprawić?

12

Kiedyś pobierałem filmy za pomocą narzędzia wiersza polecenia youtube-dl, od dwóch dni za każdym razem, gdy próbuję pobrać dowolny film, pojawia się błąd, jak pokazano poniżej.

$ 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'

co się dzieje?

kernel_panic
źródło
Czy jesteś za proxy?
jobin
Tak, taki, który należy do instytucji, w której studiuję i mam dostęp do Internetu.
kernel_panic
Czy odpowiedź była pomocna?
jobin
2
możliwy duplikat youtube-dl przestał działać
Andrea Corbellini

Odpowiedzi:

20

Miał dokładnie ten sam problem.

Zaktualizowano youtube-dl przez:

sudo youtube-dl -U

Uruchom youtube-dl przez sudo

sudo youtube-dl i poinformuje, że zmieniły dystrybucję i wymagają aktualizacji. Naciśnij enter i powinieneś iść.

Kristian Jensen
źródło
1

Musisz wyeksportować ustawienia serwera proxy, aby móc youtube-dlpobierać filmy z YouTube. Aby to zrobić, wyeksportuj ustawienia proxy za pomocą:

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/

Wymień nazwę użytkownika, hasło, gospodarza i port_no ze swoimi odpowiednimi zmiennymi. Pamiętaj, aby zastąpić wszelkie znaki specjalne w nazwie użytkownika lub haśle kodem HTML. Zignoruj ​​nazwę użytkownika i hasło, jeśli go nie masz, i wyeksportuj je jako:

export HTTP_PROXY=http://host:port_no/

itp.

Na przykład:

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

Możesz również napisać to do swojego ~/.bashrcpliku, aby nie zapisywać ich wielokrotnie w przyszłych sesjach.

Spróbuj ponownie pobrać filmy po wykonaniu tej czynności.

Praca w
źródło
1

Kiedy próbowałem dokonać aktualizacji za pomocą sudo, jak wskazano w drugiej odpowiedzi:

sudo youtube-dl -U

Dostałem wiadomość, że youtube-dl został zainstalowany przy użyciu menedżera pakietów i powinienem go użyć do aktualizacji. Ale już to zrobiłem

sudo easy_install -U youtube-dl

Na koniec wystarczyło użyć sudo, aby go uruchomić.

sudo youtube-dl
sureshvv
źródło
-1

Zainstaluj za youtube-dlpomocą sudo apt-get install youtube-dlwiersza polecenia, a następnie użyj:

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

Upewnij się, że używasz sudoprzed powyższym poleceniem!

dimid
źródło