lib/youtube_search.rb in youtube_search-0.1.0 vs lib/youtube_search.rb in youtube_search-0.1.1

- old
+ new

@@ -1,12 +1,14 @@ require 'rexml/document' require 'cgi' require 'open-uri' module YoutubeSearch - def self.search(query) - xml = open("http://gdata.youtube.com/feeds/api/videos/-/#{CGI.escape(query)}").read + def self.search(query, options={}) + options = options_with_per_page_and_page(options) + query = options.merge(:q => query).map{|k,v| "#{CGI.escape k.to_s}=#{CGI.escape v.to_s}" }.join('&') + xml = open("http://gdata.youtube.com/feeds/api/videos?#{query}").read parse(xml) end def self.parse(xml) entries = [] @@ -18,7 +20,24 @@ entry['video_id'] = entry['id'].split('/').last entries << entry end entries + end + + private + + def self.options_with_per_page_and_page(options) + options = options.dup + if per_page = options.delete(:per_page) + options['max-results'] = per_page + else + per_page = options['max-results'] + end + + if per_page and page = options.delete(:page) + options['start-index'] = per_page.to_i * ([page.to_i, 1].max - 1) + end + + options end end