2017-01-12 9 views
0

Я использую драгоценный камень под названием youtube-dl.rb, он отлично работает, но несколько дней назад он дал мне ошибку, и я не смог почини это.Ошибка Ruby youtube-dl.rb, вызванная KeyError ('Ai',)

Это пример кода, я использовал, чтобы проверить камень после того, как он продолжал давать мне ошибки:

require 'youtube-dl.rb' 
options_mp3 = { 
    extract_audio: true, 
    audio_format: "mp3",  
    output: '%(title)s.%(ext)s' 
} 
YoutubeDL.download "https://www.youtube.com/watch?v=bqUZn0gWLk4", options_mp3 

И это ошибка я получаю:

D:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/cocaine-0.5.8/lib/cocaine/command_line.rb:91:in `run': Command 'D:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/youtube-dl.rb-0.3.1.2016.09.11.1/vendor/bin/youtube-dl --output "some_file.mp3" --no-color --no-progress --print-json "https://www.youtube.com/watch?v=bqUZn0gWLk4"' returned 1. Expected 0 (Cocaine::ExitStatusError) 
Here is the command output: STDOUT: 
STDERR: 
ERROR: Signature extraction failed: Traceback (most recent call last): 
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpj47q005f\build\youtube_dl\extractor\youtube.py", line 1005, in _decrypt_signature 
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpj47q005f\build\youtube_dl\extractor\youtube.py", line 932, in _extract_signature_function 
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpj47q005f\build\youtube_dl\extractor\youtube.py", line 984, in <lambda> 
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpj47q005f\build\youtube_dl\jsinterp.py", line 254, in resf 
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpj47q005f\build\youtube_dl\jsinterp.py", line 55, in interpret_statement 
File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\rg3\tmpj47q005f\build\youtube_dl\jsinterp.py", line 174, in interpret_expression 
KeyError: 'Ai' 
(caused by KeyError('Ai',)); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl with the --verbose flag and include its complete output. 
    from D:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/youtube-dl.rb-0.3.1.2016.09.11.1/lib/youtube-dl/runner.rb:62:in `run' 
    from D:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/youtube-dl.rb-0.3.1.2016.09.11.1/lib/youtube-dl/video.rb:39:in `download' 
    from D:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/youtube-dl.rb-0.3.1.2016.09.11.1/lib/youtube-dl/video.rb:15:in `download' 
    from D:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/youtube-dl.rb-0.3.1.2016.09.11.1/lib/youtube-dl.rb:25:in `download' 
    from test.rb:12:in `<main>' 

Всякий раз, когда я использовал пример YouTube ссылка на сайте GitHub это не дает мне ошибку и загружает видео в mp4

YoutubeDL.download "https://www.youtube.com/watch?v=gvdf5n-zI14", output: 'some_file.mp4' 

Кто-то час как любая идея, как это исправить? Если нет, любое предложение по загрузке видео YouTube по-другому?

ответ

1

10 января 2017 года YouTube изменил свой плеер так, что нарушил youtube-dl. Следовательно, youtube-dl был updated. Убедитесь, что вы используете youtube-dl 2017.01.10 или новее. Посмотрите на updating instructions о том, как обновить youtube-dl.

+0

Было бы разумно, что старые видео работали, а новые - нет. Вместо этого gem я использую оригинальный youtube-dl, и теперь я использую команду «system», и она отлично работает, просто пришлось немного изменить код. – LisanneG

+0

Это меньше о возрасте видео, но видео-классе. Музыка (и некоторые коммерческие) видео использует другой плеер YouTube. Таким образом, если этот (или любой другой) ответ будет решен, не стесняйтесь [принять его] (http://meta.stackexchange.com/a/5235/141962). Благодаря! – phihag

 Смежные вопросы

  • Нет связанных вопросов^_^