2014-10-26 3 views
0

я в настоящее время играю с рубином и придумал следующеерубин функция запуска вызова каждого элемента в файле

require 'simple_youtube' 

def video_search(term, maxresults, file) 
    video_search = Youtube::Video.find(:params => {:q => "#{term}", :"max-results" => "#{maxresults}", :v => '2'}) 
    min = 0               # => setting min variable = 0 
    max = video_search.entry.size         # => setting max to #{maxresults} 
    while min < max do 
    export_results(file,video_search.entry[min].link[0].href) # => outputs each of the results to the listed file 
    min +=1 
    end 
    run = exec("~/Scripts/BASH/./music.sh #{file}")     #=> Automatically downloads the items 
end 

def export_results(file, item) 
    open(file, 'a') do |f| 
    f.puts "#{item}\n" 
    end 
end 

video_search(ARGV[0],ARGV[1],ARGV[2])     # => Call the search with arguments 
                 # => ARGV[0] - #{term} 
                 # => ARGV[1] - #{maxresults} 
                 # => ARGV[2] - #{file} 

То, что я хотел бы сделать теперь есть файл термины поиска и вызов video_search с каждый элемент в файле

file='/users/Ondrovic/Desktop/music.txt' 
    f = File.open(file, "r") 
    f.each_line { |line| 
    puts line 
    } 
    f.close 

Вышеприведенная информация Я могу прочитать каждую строку, не уверен, как правильно включить эти два.

/users/Ondrovic/Desktop/music.txt будет содержать что-то вроде следующего

Trapt Trapt 
Godsmack Shine Down 
etc 

Тогда прочитайте каждый из них из файла и запустить результаты поиска

+0

Что ваш вопрос и что вы точно пытаетесь сделать? – Surya

+0

@ User089247 хотите передать в текстовый файл с условиями поиска функции video_search – ondrovic

+0

Что такое данные в 'Test.txt' и что находится в файле'/users/Ondrovic/Desktop/music.txt'? – Surya

ответ

1

ПРИМЕЧАНИЕ: Это не лучший практика, поскольку Ruby - все о программировании OO.

Но, вот как вы можете сшить свой код, чтобы сделать его работу:

require 'simple_youtube' 

def video_search(term, maxresults, file) 
    video_search = Youtube::Video.find(:params => {:q => "#{term}", :"max-results" => "#{maxresults}", :v => '2'}) 
    min = 0               # => setting min variable = 0 
    max = video_search.entry.size         # => setting max to #{maxresults} 
    while min < max do 
    export_results(file,video_search.entry[min].link[0].href) # => outputs each of the results to the listed file 
    min +=1 
    end 

    run = exec("~/Scripts/BASH/./music.sh #{file}")     #=> Automatically downloads the items 
end 

def export_results(file, item) 
    open(file, 'a') do |f| 
    f.puts "#{item}\n" 
    end 
end 

# => Call the search with arguments 
# => line - term 
# => ARGV[0] - maxresults 
# => ARGV[1] - file 
file = '/users/Ondrovic/Desktop/music.txt' # or your can use `ARGV[0]` for term's file path 
maxresults = ARGV[0] || 10 
if ARGV[1] 
    f = File.open(file, "r") 
    f.each_line { |line| video_search(line, maxresults, ARGV[1]) } 
    f.close 
else 
    puts 'Please provide two arguments: first as maxresults and second the file path' 
end 
+0

Что было бы лучшей практикой? – ondrovic

+0

Обратите внимание, что вы всегда можете использовать Ruby в функциональном стиле программирования. Но так как Ruby - это чисто объектно-ориентированный язык программирования. Я бы рекомендовал вам создать класс и определить атрибуты вместо аргументов, создать экземпляр объекта класса и передать эти аргументы в качестве атрибутов при инициализации объектов и выполнении итерации. Однако приведенный выше код должен сработать, не так ли? Пожалуйста, не забудьте принять ответ на ваш вопрос, если они решают вашу проблему. Имейте счастливое программирование. – Surya

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