Class: Report::Zeitgest
- Inherits:
-
BaseReport
- Object
- BaseReport
- Report::Zeitgest
- Defined in:
- lib/mc/report.rb
Instance Method Summary collapse
-
#initialize(api, list_id, year) ⇒ Zeitgest
constructor
A new instance of Zeitgest.
- #load_campaigns ⇒ Object
- #run ⇒ Object
- #yearly_most_popular ⇒ Object
Constructor Details
#initialize(api, list_id, year) ⇒ Zeitgest
Returns a new instance of Zeitgest.
96 97 98 99 100 |
# File 'lib/mc/report.rb', line 96 def initialize(api, list_id, year) super(api) @list_id = list_id @year = year end |
Instance Method Details
#load_campaigns ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/mc/report.rb', line 107 def load_campaigns campaigns = [] @api.campaigns_list(:filters => {:list_id => @list_id}, :limit => 100)['data'].each do |campaign| if campaign['send_time'] != nil && campaign['send_time'].match(/#{@year.to_s}/) campaigns << campaign end end return campaigns end |
#run ⇒ Object
102 103 104 105 |
# File 'lib/mc/report.rb', line 102 def run @campaigns = load_campaigns yearly_most_popular end |
#yearly_most_popular ⇒ Object
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/mc/report.rb', line 119 def yearly_most_popular stats = {} max_rate = 0 @campaigns.each do |campaign| @api.campaignClickStats(:cid => campaign['id']).each do |item| url, stat = item click_rate = (stat["clicks"] / campaign['emails_sent'].to_f) * 100 max_rate = click_rate if click_rate > max_rate stats[url] = [click_rate, campaign['send_time'][5..6]] end end normalize = 100 / max_rate stats.sort_by { |url, clicks| clicks[0] }.reverse[0..100].each_with_index do |(url, data), index| click_rate, month = data puts "#{index}. #{url} - #{click_rate * normalize} in #{month}" end end |