class BBCIplayerSearch::Search
Public Instance Methods
search(query)
click to toggle source
# File lib/bbc_iplayer_search/search.rb, line 7 def search(query) r = response(query) programmes = programme_fragments(r.body).map do |f| rp = ResultParser.new(f) { :title => rp.title, :url => rp.url, :image_url => rp.image_url, :available => rp.available? } end if programmes.empty? & !no_results_page?(r.body) raise BBCIplayerSearch::SearchResultsPageNotRecognised else programmes end end
Private Instance Methods
no_results_page?(page)
click to toggle source
# File lib/bbc_iplayer_search/search.rb, line 27 def no_results_page?(page) page.include?('There are no results for') end
programme_fragments(page)
click to toggle source
# File lib/bbc_iplayer_search/search.rb, line 35 def programme_fragments(page) Nokogiri::HTML(page).css('.iplayer-list li.list-item') end
response(query)
click to toggle source
# File lib/bbc_iplayer_search/search.rb, line 31 def response(query) HTTPClient.new.get('http://www.bbc.co.uk/iplayer/search', { 'q' => query }) end