nbs 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +50 -1
- data/lib/nbs/version.rb +1 -1
- data/lib/nbs.rb +43 -26
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 0ea55a957b2a59467dab8a568e576cb39e0800d8
         | 
| 4 | 
            +
              data.tar.gz: f8d837eb05a9a80a7037cd6653c6e35342073cae
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 42496492938c9f415693e45ff7cca1c741d9c9e7ec89e53e78757c3e463c788cdbaf7ecdc0b17504ac7868a80b995701835f3cca86e8eb32f2a90d5ed296e513
         | 
| 7 | 
            +
              data.tar.gz: 12be612e9c9e7f964cbb57d0921e10b5db28af77c4dc0db4169c1fd817555ea837d0f22aececd699e06bc34887864f83d63a7734d89f7f9c6f544246d995e1ca
         | 
    
        data/README.md
    CHANGED
    
    | @@ -55,7 +55,7 @@ results in | |
| 55 55 | 
             
            ]
         | 
| 56 56 | 
             
            ```
         | 
| 57 57 |  | 
| 58 | 
            -
            ### Metrics
         | 
| 58 | 
            +
            ### Metrics and Profiles
         | 
| 59 59 | 
             
            instance based on nbs id
         | 
| 60 60 | 
             
            ```
         | 
| 61 61 | 
             
            default_options = {
         | 
| @@ -106,6 +106,55 @@ available metrics via gem (more available through api) | |
| 106 106 |  | 
| 107 107 | 
             
            Typically results go as far back as 3 months
         | 
| 108 108 |  | 
| 109 | 
            +
            `nbs.artist_profiles` returns
         | 
| 110 | 
            +
             | 
| 111 | 
            +
            ```
         | 
| 112 | 
            +
            [
         | 
| 113 | 
            +
                [0] {
         | 
| 114 | 
            +
                    :nbs_profle_id => "9946716",
         | 
| 115 | 
            +
                              :url => "http://www.facebook.com/therealrunthejewels"
         | 
| 116 | 
            +
                },
         | 
| 117 | 
            +
                [1] {
         | 
| 118 | 
            +
                    :nbs_profle_id => "9946718",
         | 
| 119 | 
            +
                              :url => "http://twitter.com/runjewels"
         | 
| 120 | 
            +
                },
         | 
| 121 | 
            +
                [2] {
         | 
| 122 | 
            +
                    :nbs_profle_id => "9946719",
         | 
| 123 | 
            +
                              :url => "http://www.youtube.com/channel/UCeveumRTn2o--9j1Xz2KUCQ"
         | 
| 124 | 
            +
                },
         | 
| 125 | 
            +
                [3] {
         | 
| 126 | 
            +
                    :nbs_profle_id => "16209803",
         | 
| 127 | 
            +
                              :url => "http://instagram.com/runthejewels"
         | 
| 128 | 
            +
                }
         | 
| 129 | 
            +
            ]
         | 
| 130 | 
            +
            ```
         | 
| 131 | 
            +
             | 
| 132 | 
            +
            ### Metric
         | 
| 133 | 
            +
            ```
         | 
| 134 | 
            +
            Nbs.metric('9946716', {})
         | 
| 135 | 
            +
            default_options = { start: (Time.now - 3.day).to_i,
         | 
| 136 | 
            +
                                end: Time.now.to_i,
         | 
| 137 | 
            +
                                metric: 'fans' }
         | 
| 138 | 
            +
            ```
         | 
| 139 | 
            +
            returns metrics for a single profile. eg:
         | 
| 140 | 
            +
            ```
         | 
| 141 | 
            +
            [
         | 
| 142 | 
            +
                [0] {
         | 
| 143 | 
            +
                      :time => 2017-07-09 00:00:00 UTC,
         | 
| 144 | 
            +
                    :volume => 64608
         | 
| 145 | 
            +
                },
         | 
| 146 | 
            +
                [1] {
         | 
| 147 | 
            +
                      :time => 2017-07-10 00:00:00 UTC,
         | 
| 148 | 
            +
                    :volume => 64737
         | 
| 149 | 
            +
                },
         | 
| 150 | 
            +
                [2] {
         | 
| 151 | 
            +
                      :time => 2017-07-11 00:00:00 UTC,
         | 
| 152 | 
            +
                    :volume => 64903
         | 
| 153 | 
            +
                }
         | 
| 154 | 
            +
            ]
         | 
| 155 | 
            +
            ```
         | 
| 156 | 
            +
             | 
| 157 | 
            +
             | 
| 109 158 | 
             
            ## Development
         | 
| 110 159 |  | 
| 111 160 | 
             
            After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
         | 
    
        data/lib/nbs/version.rb
    CHANGED
    
    
    
        data/lib/nbs.rb
    CHANGED
    
    | @@ -6,56 +6,73 @@ require 'active_support/all' | |
| 6 6 | 
             
            class Nbs
         | 
| 7 7 | 
             
              include HTTParty
         | 
| 8 8 | 
             
              extend Configuration
         | 
| 9 | 
            +
              attr_accessor :all_metrics_raw
         | 
| 9 10 |  | 
| 11 | 
            +
              SERVICES = %w(facebook youtube twitter instagram)
         | 
| 10 12 | 
             
              # define_setting :access_key
         | 
| 11 13 | 
             
              # define_setting :least_favorite_liquid, "seltzer water"
         | 
| 12 14 |  | 
| 13 | 
            -
              def initialize(_nbs_id= | 
| 15 | 
            +
              def initialize(_nbs_id=1076707, _options = {}) # run the jewels
         | 
| 14 16 | 
             
                @nbs_id = "#{_nbs_id}.json"
         | 
| 15 | 
            -
                @options = { | 
| 17 | 
            +
                @options = {start: (Time.now - 7.day).to_i, end: Time.now.to_i, metric: 'fans'}.merge(_options)
         | 
| 16 18 | 
             
              end
         | 
| 17 19 |  | 
| 18 | 
            -
              def  | 
| 20 | 
            +
              def metrics
         | 
| 19 21 | 
             
                @all_metrics_raw ||= self.class.post("/metrics/artist/#{@nbs_id}", @options).parsed_response
         | 
| 20 | 
            -
                if @ | 
| 21 | 
            -
                  @ | 
| 22 | 
            +
                if @metrics.blank?
         | 
| 23 | 
            +
                  @metrics = {}
         | 
| 22 24 | 
             
                  @all_metrics_raw.each do |am|
         | 
| 23 | 
            -
                     | 
| 25 | 
            +
                    service  = am["Service"]["name"].downcase
         | 
| 26 | 
            +
                    _metrics = am["Metric"]['fans']
         | 
| 27 | 
            +
                    if _metrics.present? && SERVICES.any? { |s| s == service }
         | 
| 28 | 
            +
                      @metrics[service.to_sym] ||= []
         | 
| 29 | 
            +
                      @metrics[service.to_sym] << { url: am['Profile']['url'], data: self.class.tidy_metrics(_metrics)}
         | 
| 30 | 
            +
                    end
         | 
| 24 31 | 
             
                  end
         | 
| 25 32 | 
             
                end
         | 
| 26 | 
            -
                @ | 
| 33 | 
            +
                @metrics
         | 
| 27 34 | 
             
              end
         | 
| 28 35 |  | 
| 29 | 
            -
              def  | 
| 30 | 
            -
                if @ | 
| 31 | 
            -
                  @ | 
| 32 | 
            -
                   | 
| 33 | 
            -
                   | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            +
              def artist_profiles
         | 
| 37 | 
            +
                if @artist_profiles.blank?
         | 
| 38 | 
            +
                  @artist_profiles = []
         | 
| 39 | 
            +
                  response = self.class.get("/profiles/artist/#{@nbs_id}", @options).parsed_response
         | 
| 40 | 
            +
                  response.each do |id, data|
         | 
| 41 | 
            +
                    next unless SERVICES.any? { |s| s == data['name'].downcase }
         | 
| 42 | 
            +
                    @artist_profiles << {nbs_profle_id: id, url: data['url']}
         | 
| 43 | 
            +
                  end
         | 
| 36 44 | 
             
                end
         | 
| 37 | 
            -
                @ | 
| 45 | 
            +
                @artist_profiles
         | 
| 38 46 | 
             
              end
         | 
| 39 47 |  | 
| 40 | 
            -
              def self.artist_search( | 
| 41 | 
            -
                 | 
| 42 | 
            -
             | 
| 43 | 
            -
                  result = get("/artists/search.json", { query: {q: "#{ | 
| 44 | 
            -
                   | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 48 | 
            +
              def self.artist_search(_names)
         | 
| 49 | 
            +
                artist_search = []
         | 
| 50 | 
            +
                [_names].flatten.each do |name|
         | 
| 51 | 
            +
                  result = get("/artists/search.json", { query: {q: "#{name}"}})
         | 
| 52 | 
            +
                  if result.code == 200
         | 
| 53 | 
            +
                    result.parsed_response.each do |id, values|
         | 
| 54 | 
            +
                      artist_search << {nbs_id: id, name: values["name"], music_brainz_id: values["music_brainz_id"]}
         | 
| 55 | 
            +
                    end
         | 
| 47 56 | 
             
                  end
         | 
| 48 57 | 
             
                end
         | 
| 49 | 
            -
                 | 
| 58 | 
            +
                artist_search.uniq
         | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
              def self.metric(_nbs_profile_id=16209803, _options={}) #run the jewels instagram profile
         | 
| 62 | 
            +
                options = {query: {start: (Time.now - 3.day).to_i, end: Time.now.to_i, metric: 'fans'}.merge(_options)}
         | 
| 63 | 
            +
                response = post("/metrics/profile/#{_nbs_profile_id}.json", options)
         | 
| 64 | 
            +
                if response.code == 200
         | 
| 65 | 
            +
                  tidy_metrics(response.parsed_response['fans'])
         | 
| 66 | 
            +
                else
         | 
| 67 | 
            +
                  []
         | 
| 68 | 
            +
                end
         | 
| 50 69 | 
             
              end
         | 
| 51 70 |  | 
| 52 71 | 
             
              def self.setup(_key)
         | 
| 53 72 | 
             
                base_uri "#{_key}.api3.nextbigsound.com"
         | 
| 54 73 | 
             
              end
         | 
| 55 74 |  | 
| 56 | 
            -
               | 
| 57 | 
            -
             | 
| 58 | 
            -
              def tidy_metrics(_arry)
         | 
| 75 | 
            +
              def self.tidy_metrics(_arry)
         | 
| 59 76 | 
             
                _arry.map do |day, value|
         | 
| 60 77 | 
             
                  {time: Time.at(day.to_i.days.to_i).utc, volume: value}
         | 
| 61 78 | 
             
                end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: nbs
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - David Georgiou
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017- | 
| 11 | 
            +
            date: 2017-07-12 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         |