2017-01-12 16 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>' 

githubサイトのリンクでエラーが発生せず、mp4でビデオをダウンロードします

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

誰かhどのようにこれを修正するためのアイデアとして?そうでない場合は、YouTube動画を別の方法でダウンロードすることをお勧めしますか?

答えて

1

2017年1月10日、YouTubeはyoutube-dlを破った方法でプレーヤーを変更しました。その結果、youtube-dlはupdatedになりました。 youtube-dl 2017.01.10以降を使用していることを確認してください。 youtube-dlのアップデート方法については、updating instructionsをご覧ください。

+0

これは、古いビデオは機能していて、新しいビデオは機能しなかったことがわかります。この宝石の代わりに私はオリジナルのyoutube-dlを使い、 "システム"コマンドを使用し、うまくいきました。私のコードをちょっと編集しなければなりませんでした。 – LisanneG

+0

ビデオの年齢は少なくなりますが、ビデオクラスです。音楽(およびいくつかの商業用)ビデオは異なるYouTubeプレーヤーを使用します。もし、この(または他の)答えが解決すれば、それを受け入れることができます(http://meta.stackexchange.com/a/5235/141962)。ありがとう! – phihag

関連する問題