Class: BillboardAPI
- Inherits:
-
Object
- Object
- BillboardAPI
- Defined in:
- lib/billboard_api.rb
Class Method Summary collapse
- .artist_100 ⇒ Object
- .billboard_200 ⇒ Object
- .create_artist_object(name, img_url) ⇒ Object
- .create_song_object(name, artist, img_url) ⇒ Object
- .hot_100 ⇒ Object
Class Method Details
.artist_100 ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/billboard_api.rb', line 9 def self.artist_100 document = Nokogiri::HTML.parse(open(ARTIST_100_URL)) artists = document.css(".chart-list-item") artists.map do |artist| new_artist = create_artist_object( artist.attribute("data-title").value, if artist.css(".chart-list-item__image-wrapper").css("img").length > 1 if artist.css(".chart-list-item__image-wrapper").css("img")[1].attributes.has_key?("data-src") artist.css(".chart-list-item__image-wrapper").css("img")[1].attribute("data-src").value else artist.css(".chart-list-item__image-wrapper").css("img")[1].attribute("src").value end else artist.css(".chart-list-item__image-wrapper").css("img").attribute("data-src").value end ) end end |
.billboard_200 ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/billboard_api.rb', line 45 def self.billboard_200 document = Nokogiri::HTML.parse(open(BILLBOARD_200_URL)) songs = document.css(".chart-list__element") songs.map do |song| new_song = create_song_object( song.css(".chart-element__information__song").text, song.css(".chart-element__information__artist").text, if song.css(".chart-element__image").attribute("style").value == "" #Empty style attribute catch "" else song.css(".chart-element__image").attribute("style").value.split("('")[1].split("')")[0] end ) end end |
.create_artist_object(name, img_url) ⇒ Object
61 62 63 64 65 66 |
# File 'lib/billboard_api.rb', line 61 def self.create_artist_object(name, img_url) { name: name, img_url: img_url } end |
.create_song_object(name, artist, img_url) ⇒ Object
68 69 70 71 72 73 74 |
# File 'lib/billboard_api.rb', line 68 def self.create_song_object(name, artist, img_url) { name: name, artist: artist, img_url: img_url } end |
.hot_100 ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/billboard_api.rb', line 29 def self.hot_100 document = Nokogiri::HTML.parse(open(HOT_100_URL)) songs = document.css(".chart-list__element") songs.map do |song| new_song = create_song_object( song.css(".chart-element__information__song").text, song.css(".chart-element__information__artist").text, if song.css(".chart-element__image").attribute("style").value == "" #Empty style attribute catch "" else song.css(".chart-element__image").attribute("style").value.split("('")[1].split("')")[0] end ) end end |