class YouTubeRipper
Public Class Methods
rip()
click to toggle source
# File lib/ytripper.rb, line 6 def self.rip options = {} OptionParser.new do |parser| parser.on("-i", "--input-file FILE", "Specify the input FILE") do |input_file| options[:i] = input_file end parser.on("-o", "--output-directory DIRECTORY", "Specify the output DIRECTORY") do |output_directory| options[:o] = output_directory end parser.on("-f", "--output-format FORMAT", "Specify the output FORMAT") do |format| options[:f] = format end end.parse! raise OptionParser::MissingArgument if options[:i].nil? raise OptionParser::MissingArgument if options[:o].nil? raise OptionParser::MissingArgument if options[:f].nil? list = File.open(options[:i]).read.split("\n") list.each do |item| qoptions = { "q" => URI.encode_www_form_component(item), "part" => "snippet" } videoId = YoutubeSearch.search(qoptions)['items'][0]['id']['videoId'] url = "https://www.youtube.com/watch?v=#{videoId}" format = options[:f] case format when 'mp3' command = "youtube-dl --extract-audio --audio-format mp3 -o '#{options[:o]}/%(title)s.%(ext)s' #{url}" when 'mp4' command = "youtube-dl -f 137+140 -o '#{options[:o]}/%(title)s.%(ext)s' #{url}" end if defined?(command) system(command) end end end