使用ruby-youtube-dl语法错误

时间:2013-12-24 09:46:51

标签: ruby git github gem gemfile

我是这个网站的新手,也是编程方面的新手。其实我正在学习Ruby。 在我的第一个实验中,我想从Youtube下载一个文件。我决定使用ruby-youtube-dl。 我将ARGV0解析为$ url。 然后我使用:

FileUtils.cd("#{$musicdir}/#{$folder}") do
  YoutubeDL::Downloader.download_audio("#{$url}")

end

但那个产生了那个输出:

sh: -c: Zeile 0: Syntaxfehler beim unerwarteten Wort `('
sh: -c: Zeile 0: `/home/sascha/.rvm/gems/ruby-2.0.0-p353/gems/ruby-youtube-dl-0.0.5/bin/youtube-dl.py --no-progress --extract-audio --audio-format=mp3 --output=/tmp/%(stitle)s-%(uploader)s-%(autonumber)s.mp3'
/home/sascha/.rvm/gems/ruby-2.0.0-p353/gems/ruby-youtube-dl-0.0.5/lib/ruby-youtube-dl/downloader.rb:9:in `download_audio': undefined method `[]' for nil:NilClass (NoMethodError)
    from /home/sascha/RubymineProjects/ruby_script_collection/youtube_dlhelper/lib/youtube_dlhelper.rb:86:in `block in <top (required)>'
    from /home/sascha/.rvm/rubies/ruby-2.0.0-p353/lib64/ruby/2.0.0/fileutils.rb:125:in `chdir'
    from /home/sascha/.rvm/rubies/ruby-2.0.0-p353/lib64/ruby/2.0.0/fileutils.rb:125:in `cd'
    from /home/sascha/RubymineProjects/ruby_script_collection/youtube_dlhelper/lib/youtube_dlhelper.rb:84:in `<top (required)>'
    from -e:1:in `load'
    from -e:1:in `<main>'

完整的源文件放在那里:http://pastebin.com/jAwjHanw

也许有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

我查看了日志,这似乎是一个错误。您可以执行以下步骤来解决或部分解决问题:

  1. 查看gem:

    $ cd ~/git
    $ git clone https://github.com/bnmrrs/ruby-youtube-dl.git
    
  2. 在项目的 Gemfile 中指定路径文件夹,该文件夹将指向新签出的gem:

    gem 'ruby-youtube-dl', :path => '~/git/ruby-youtube-dl'
    
  3. 尝试在本地修复gem,例如删除括号和#chars,并用常量替换它们。当然这将是一种解决方法。

  4. 如果你正在开发一个gem或rails应用程序,你可以shell发布你对web的更改,你可以通过在 github上分支 gem 来做到这一点,推动你改成你的版本分支:

     $ git clone git://github.com/yourname/ruby-youtube-dl.git
     $ cd ruby-youtube-dl
     $ git branch fixbranch
     $ git checkout fixbranch
     # do your changes...
     $ git push origin fixbranch
    
  5. 将您的更改用作主要。在这种情况下,您需要更改Gemfile,例如如下:

    gem 'ruby-youtube-dl', :git => 'git://github.com/yourname/ruby-youtube-dl.git', :branch => 'fixbranch'
    
  6. 如果您的更改没有解决方法,您可以在 github 上打开一个拉取请求,将您的更改提交到主流。

  7. 如果即使使用解决方法也无法解决问题,那么将问题报告给gem开发人员here并将错误日志提供给他们将是野兽。