Class: BillboardAPI

Inherits:
Object
  • Object
show all
Defined in:
lib/billboard_api.rb

Class Method Summary collapse

Class Method Details

.artist_100Object



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_200Object



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_100Object



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