class Notu::MostPlayedTracks

Constants

PERIODS

Attributes

period[R]

Public Class Methods

new(library, options = {}) click to toggle source
Calls superclass method Notu::Listing::new
# File lib/notu/most_played_tracks.rb, line 17
def initialize(library, options = {})
  super(library)
  options = options.stringify_keys.reverse_merge('period' => PERIODS.keys.first)
  self.period = options['period']
end

Public Instance Methods

each() { |track(artist: artist, plays_count: plays_count, title: title)| ... } click to toggle source
# File lib/notu/most_played_tracks.rb, line 23
def each(&block)
  return unless block_given?
  page_urls.each do |url|
    document = HtmlDocument.get(url)
    (document/'table.chartlist tbody tr').each do |element|
      artist = (element/'td.chartlist-artist a').first.try(:text) || next
      title = (element/'td.chartlist-name a').first.try(:text) || next
      plays_count = (element/'td.chartlist-bar .chartlist-count-bar-value').text.gsub(/[^\d]/, '').presence || next
      yield(Track.new(artist: artist, plays_count: plays_count, title: title))
    end
  end
  nil
end
params() click to toggle source
# File lib/notu/most_played_tracks.rb, line 37
def params
  { 'date_preset' => PERIODS[period] }
end
path() click to toggle source
# File lib/notu/most_played_tracks.rb, line 41
def path
  'library/tracks'
end

Private Instance Methods

period=(value) click to toggle source
# File lib/notu/most_played_tracks.rb, line 47
def period=(value)
  raise ArgumentError.new("Notu::MostPlayedTracks#period is invalid: #{value.inspect}") unless PERIODS.key?(value.to_s)
  @period = value.to_s
end