adops_report_scrapper 0.1.29 → 0.1.30

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ae43547932efdcbe02b3fd153a02816453999acb
4
- data.tar.gz: fc4f1d79ff70f6af01b961df4d3ac1c5d4309cb3
3
+ metadata.gz: 7c70e5a5ebc549c6f187dc54438c39e6c1030dc5
4
+ data.tar.gz: b546f11751c3e55fae68847bea85a12547599875
5
5
  SHA512:
6
- metadata.gz: 8f2e5caecc5d2aa2fb7917fa8e1f8b34df0d703e3f573315973bdcd1e363f0e2571dca35341740de152dac74c8b74f58412910be5a2bf3b269499eff232cb4af
7
- data.tar.gz: 33a2d356602ef0f4394e9189349f114ba2ef4599ebb267406cbd0d311fe669765a0a68786f0f7c78e9bfe38bbfba56307db1cf24c7a275fbda705a120c551a66
6
+ metadata.gz: 463417877c7112eefe8adf41e1781232e25d8599108898d2d90ff1f4fa1e03ccb4b8767032bcf84bbdda1b946ebe0b1b5599aa9a6d545fc83bcc3716233fde62
7
+ data.tar.gz: 00c69ea686a7dae418294da3e3fe46857f04f1d69a8ace9f9685f70e4e0e66483b5a19e61e91d0981939a4917d12b5ca817b05cba226c50003cf6467c021547b
data/Rakefile CHANGED
@@ -7,7 +7,7 @@ require 'adops_report_scrapper'
7
7
  require 'byebug'
8
8
 
9
9
  desc 'Collect all data'
10
- task :all => [:openx, :tremor, :brightroll, :yellowhammer, :adaptv, :fourninefive, :adx, :revcontent, :gcs, :browsi, :netseer, :sonobi, :nativo, :adsupply, :marfeel, :adsense, :criteo, :triplelift, :conversant, :liveintent, :adiply, :contentad, :facebookaudience, :adtechus, :adtomation, :rhythmone] do # openx is the most unstable one, run it first
10
+ task :all => [:openx, :tremor, :brightroll, :yellowhammer, :adaptv, :fourninefive, :adx, :revcontent, :gcs, :browsi, :netseer, :sonobi, :nativo, :adsupply, :marfeel, :adsense, :criteo, :triplelift, :conversant, :liveintent, :adiply, :contentad, :facebookaudience, :adtechus, :adtomation, :rhythmone, :littlethings] do # openx is the most unstable one, run it first
11
11
  puts '========== You are all set'
12
12
  end
13
13
 
@@ -146,6 +146,11 @@ task :rhythmone do
146
146
  save_as_csv :rhythmone, :rhythmone
147
147
  end
148
148
 
149
+ desc 'Collect littlethings data'
150
+ task :littlethings do
151
+ save_as_csv :littlethings, :littlethings
152
+ end
153
+
149
154
  def date
150
155
  @date ||= ENV['date'].nil? ? Date.today - 1 : Date.today - ENV['date'].to_i
151
156
  end
@@ -40,3 +40,4 @@ require 'adops_report_scrapper/adtechus_client'
40
40
  require 'adops_report_scrapper/zedo_client'
41
41
  require 'adops_report_scrapper/adtomation_client'
42
42
  require 'adops_report_scrapper/rhythmone_client'
43
+ require 'adops_report_scrapper/littlethings_client'
@@ -0,0 +1,50 @@
1
+ require 'date'
2
+ require_relative 'base_client'
3
+
4
+ class AdopsReportScrapper::LittlethingsClient < AdopsReportScrapper::BaseClient
5
+ def date_supported?(date = nil)
6
+ _date = date || @date
7
+ return true if _date >= Date.today - 4
8
+ false
9
+ end
10
+
11
+ private
12
+
13
+ def login
14
+ @client.visit 'http://www.reportingthings.com'
15
+ @client.fill_in 'email', :with => @login
16
+ @client.fill_in 'password', :with => @secret
17
+ @client.click_button 'Sign In'
18
+ begin
19
+ @client.find :xpath, '//*[contains(text(),"Report")]'
20
+ rescue Exception => e
21
+ raise e, 'Littlethings login error'
22
+ end
23
+ end
24
+
25
+ def scrap
26
+ request_report
27
+ extract_data_from_report
28
+ end
29
+
30
+ def request_report
31
+ @client.find(:xpath, '//*[contains(text(),"Report")]').click
32
+ pub_id = @client.body.match(/\/report\/story\/(\d+)\/all\/all/).captures[0]
33
+ daterange_end_str = Date.today.strftime('%m/%d/%Y')
34
+ daterange_begin_str = (Date.today - 5).strftime('%m/%d/%Y')
35
+ daterange_str = "#{daterange_begin_str} - #{daterange_end_str}"
36
+ @client.visit "http://www.reportingthings.com/report/story/#{pub_id}/all/all?type=revenue&daterange=#{URI.encode(daterange_str)}"
37
+ end
38
+
39
+ def extract_data_from_report
40
+ date_str = @date.strftime('%m/%d/%Y')
41
+ rows = @client.find_all :xpath, '//table[@id="report-table"]/*/tr'
42
+ rows = rows.map { |tr| tr.find_css('td,th').map { |td| td.visible_text } }
43
+ header = rows.shift
44
+ @data = [header]
45
+ rows.each do |row|
46
+ next unless row[0] == date_str
47
+ @data << row
48
+ end
49
+ end
50
+ end
@@ -1,3 +1,3 @@
1
1
  module AdopsReportScrapper
2
- VERSION = "0.1.29"
2
+ VERSION = "0.1.30"
3
3
  end
data/secret.sample.yml CHANGED
@@ -97,3 +97,6 @@ rhythmone:
97
97
  client_id: ------
98
98
  client_secret: ------
99
99
  publisher_id: ------
100
+ littlethings:
101
+ login: ------
102
+ secret: ------
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adops_report_scrapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.29
4
+ version: 0.1.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stayman Hou
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-20 00:00:00.000000000 Z
11
+ date: 2016-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpclient
@@ -233,6 +233,7 @@ files:
233
233
  - lib/adops_report_scrapper/criteo_client.rb
234
234
  - lib/adops_report_scrapper/facebookaudience_client.rb
235
235
  - lib/adops_report_scrapper/gcs_client.rb
236
+ - lib/adops_report_scrapper/littlethings_client.rb
236
237
  - lib/adops_report_scrapper/liveintent_client.rb
237
238
  - lib/adops_report_scrapper/marfeel_client.rb
238
239
  - lib/adops_report_scrapper/nativo_client.rb