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