如何修复 YouTube-dl 参数无效。在 Heroku 上

How to fix YouTube-dl Invalid parameters. on Heroku

当我尝试使用 youtube-dl.rb gem 下载一首歌曲时,它可以在本地运行,但是当我在 Heroku 上下载时,它会显示:

Terrapin::ExitStatusError - Command '/app/vendor/bundle/ruby/2.6.0/gems/youtube-dl.rb-0.3.1.2016.09.11.1/vendor/bin/youtube-dl --no-color --no-progress --print-json "ytsearch:notion hooked"' returned 1. Expected 0

它还说了一些关于 cocaine 被弃用的事情:

DEPRECATION: The cocaine gem is deprecated. Please upgrade to terrapin. See https://github.com/thoughtbot/terrapin/ for further instructions.

这是我的代码 运行 这个 gem:

song_list.each { |song|
        # formatted_command = 'youtube-dl -o "' + __dir__.to_s + '/' + temp_dir_name + '/%(title)s.%(ext)s" -x --audio-format mp3 "ytsearch:' + song + '"'
        # system formatted_command
        options = {
            audio_format: :mp3,
            extract_audio: true,
            output: "#{__dir__.to_s}/#{temp_dir_name}/%(title)s.%(ext)s",
        }
        YoutubeDL.download "ytsearch:#{song}", options
    }

我评论了上面两行是使用 CLI 工具下载歌曲,效果也很好,但我无法在 Heroku 机器上下载该工具,所以我必须使用这个 Ruby 包装器。

以下是在您的 Heroku 服务器上 运行 youtube-dl 的一些说明:

  1. 在您的存储库的根目录中创建一个 requirements.txt 文件,内容为:
youtube-dl
  1. 运行下面三个命令设置Pythonbuildpack以及Rubybuildpack,确保Ruby是 主要 buildpack:
heroku buildpacks:add heroku/ruby
heroku buildpacks:add --index 1 heroku/python
heroku buildpacks:set heroku/ruby

提交并部署,打开 heroku run bash 和 运行 youtube-dl 进行测试。如果它在这里工作,您也可以从 Ruby 调用它。