class Pitchscrape::BestNewMusic

Constants

BNM_URL

Public Class Methods

albums(page = 1) click to toggle source
# File lib/pitchscrape/best_new_music.rb, line 8
def albums(page = 1)
  parse_doc(page)
end

Private Class Methods

doc(page) click to toggle source
# File lib/pitchscrape/best_new_music.rb, line 14
def doc(page)
  Nokogiri::HTML(open("#{BNM_URL}/#{page}"), nil, 'UTF-8').css('ul.bnm-list > li')
end
parse_artist(album) click to toggle source
# File lib/pitchscrape/best_new_music.rb, line 38
def parse_artist(album)
  album.at_css('div.info h1').text
end
parse_artwork(album) click to toggle source
# File lib/pitchscrape/best_new_music.rb, line 30
def parse_artwork(album)
  Nokogiri::HTML(album.at_css('div.lazy').attr('data-content')).at_css('img').attr('src')
end
parse_doc(page) click to toggle source
# File lib/pitchscrape/best_new_music.rb, line 18
def parse_doc(page)
  doc(page).map do |album|
    Pitchscrape::Album.new(
      artwork: parse_artwork(album),
      title: parse_title(album),
      artist: parse_artist(album),
      rating: parse_rating(album),
      review: parse_review(album)
    )
  end
end
parse_rating(album) click to toggle source
# File lib/pitchscrape/best_new_music.rb, line 42
def parse_rating(album)
  album.at_css('div.info span.score').text.strip
end
parse_review(album) click to toggle source
# File lib/pitchscrape/best_new_music.rb, line 46
def parse_review(album)
  sanitize(album.at_css('div.editorial').inner_html)
end
parse_title(album) click to toggle source
# File lib/pitchscrape/best_new_music.rb, line 34
def parse_title(album)
  album.at_css('div.info h2').text
end
sanitize(html) click to toggle source
# File lib/pitchscrape/best_new_music.rb, line 50
def sanitize(html)
  html.gsub(/<p>|<\/p>|\n/, '').strip
end