Class: Pandata::Parser
- Inherits:
-
Object
- Object
- Pandata::Parser
- Defined in:
- lib/pandata/parser.rb
Overview
Parses HTML/XML pages from Pandora for relevant data.
Instance Method Summary collapse
-
#get_followers(html) ⇒ Object
Returns an array of hashes with :name, :webname and :href keys.
-
#get_following(html) ⇒ Object
Returns an array of hashes with :name, :webname and :href keys.
-
#get_liked_albums(html) ⇒ Object
Returns an array of hashes with :artist and :album keys.
-
#get_liked_artists(html) ⇒ Object
Returns an array of artist names.
-
#get_liked_stations(html) ⇒ Object
Returns an array of station names.
-
#get_liked_tracks(html) ⇒ Object
Returns an array of hashes with :artist and :track keys.
-
#get_next_data_indices(html) ⇒ Hash, False
Get the query parameters necessary to get the next page of data from Pandora.
-
#get_webnames_from_search(html) ⇒ Array
Get the webnames from a user ID search.
Instance Method Details
#get_followers(html) ⇒ Object
Returns an array of hashes with :name, :webname and :href keys.
88 89 90 |
# File 'lib/pandata/parser.rb', line 88 def get_followers(html) get_followx_users(html) end |
#get_following(html) ⇒ Object
Returns an array of hashes with :name, :webname and :href keys.
82 83 84 |
# File 'lib/pandata/parser.rb', line 82 def get_following(html) get_followx_users(html) end |
#get_liked_albums(html) ⇒ Object
Returns an array of hashes with :artist and :album keys.
70 71 72 73 74 75 76 77 78 |
# File 'lib/pandata/parser.rb', line 70 def get_liked_albums(html) albums = [] infobox_each_link(html) do |title, subtitle| albums << { album: title, artist: subtitle } end albums end |
#get_liked_artists(html) ⇒ Object
Returns an array of artist names.
58 59 60 |
# File 'lib/pandata/parser.rb', line 58 def get_liked_artists(html) get_infobox_titles(html) end |
#get_liked_stations(html) ⇒ Object
Returns an array of station names.
64 65 66 |
# File 'lib/pandata/parser.rb', line 64 def get_liked_stations(html) get_infobox_titles(html) end |
#get_liked_tracks(html) ⇒ Object
Returns an array of hashes with :artist and :track keys.
45 46 47 48 49 50 51 52 53 54 |
# File 'lib/pandata/parser.rb', line 45 def get_liked_tracks(html) tracks = [] doublelink_each_link(html) do |title, subtitle| artist = subtitle.sub(/^by\s/i, '') tracks << { track: title, artist: artist } end tracks end |
#get_next_data_indices(html) ⇒ Hash, False
Get the query parameters necessary to get the next page of data from Pandora.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/pandata/parser.rb', line 25 def get_next_data_indices(html) # .js-more-link is found on mobile pages. show_more = Nokogiri::HTML(html).css('.show_more, .js-more-link')[0] if show_more next_indices = {} data_attributes = ['nextStartIndex', 'nextLikeStartIndex', 'nextThumbStartIndex'] data_attributes.each do |attr_name| attr = show_more.attributes['data-' + attr_name.downcase] next_indices[attr_name.to_sym] = attr.value.to_i if attr end next_indices else false end end |
#get_webnames_from_search(html) ⇒ Array
Get the webnames from a user ID search.
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/pandata/parser.rb', line 11 def get_webnames_from_search(html) user_links = Nokogiri::HTML(html).css('.user_name a') webnames = [] user_links.each do |link| webnames << link['webname'] end webnames end |