Class: Notu::MostPlayedTracks
- Inherits:
-
Object
- Object
- Notu::MostPlayedTracks
- Includes:
- Listing
- Defined in:
- lib/notu/most_played_tracks.rb
Constant Summary collapse
- PERIODS =
{ '7 days' => 'LAST_7_DAYS', '30 days' => 'LAST_30_DAYS', '90 days' => 'LAST_90_DAYS', '365 days' => 'LAST_365_DAYS', 'Overall' => '', }
Instance Attribute Summary collapse
-
#period ⇒ Object
readonly
Returns the value of attribute period.
Attributes included from Listing
Instance Method Summary collapse
- #each(&block) ⇒ Object
-
#initialize(library, options = {}) ⇒ MostPlayedTracks
constructor
A new instance of MostPlayedTracks.
- #params ⇒ Object
- #path ⇒ Object
Methods included from Listing
Constructor Details
#initialize(library, options = {}) ⇒ MostPlayedTracks
Returns a new instance of MostPlayedTracks.
17 18 19 20 21 |
# File 'lib/notu/most_played_tracks.rb', line 17 def initialize(library, = {}) super(library) = .stringify_keys.reverse_merge('period' => PERIODS.keys.first) self.period = ['period'] end |
Instance Attribute Details
#period ⇒ Object
Returns the value of attribute period.
15 16 17 |
# File 'lib/notu/most_played_tracks.rb', line 15 def period @period end |
Instance Method Details
#each(&block) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 |
# 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 ⇒ Object
37 38 39 |
# File 'lib/notu/most_played_tracks.rb', line 37 def params { 'date_preset' => PERIODS[period] } end |
#path ⇒ Object
41 42 43 |
# File 'lib/notu/most_played_tracks.rb', line 41 def path 'library/tracks' end |