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