ppc 2.0.3 → 2.0.4
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 +6 -0
- data/lib/ppc.rb +1 -1
- data/lib/ppc/api.rb +1 -10
- data/lib/ppc/api/baidu/bulk.rb +3 -3
- data/lib/ppc/api/baidu/report.rb +15 -15
- data/lib/ppc/api/qihu/report.rb +5 -5
- data/lib/ppc/api/sm.rb +1 -1
- data/lib/ppc/api/sm/bulk.rb +1 -1
- data/lib/ppc/api/sm/report.rb +15 -15
- data/lib/ppc/api/sogou.rb +2 -2
- data/lib/ppc/api/sogou/bulk.rb +1 -1
- data/lib/ppc/api/sogou/report.rb +15 -15
- data/lib/ppc/operation/report.rb +16 -16
- 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: 8c1ffce2f8c4545b7ae1489322d55a0ef2c03511
|
4
|
+
data.tar.gz: 58e7f48a6389464bf1c9a68d5f01c6d27f4546d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e9518dd1d57f4dd9a053b8ba3fc1e18e5821eecc928421e360127d51b2e31203268d830fbd54741b00ab4141258c4baf36ccc084527453b08cdaeee2096f66d
|
7
|
+
data.tar.gz: e789f19103d66d2cac478bb27372b1c207b2a5b53eaeba1036d380b9d8afa47290d02b672fb7d5cd4d19d8b06559cf4a91f8f29b61c0c5eea5078859eaed9c83
|
data/README.md
CHANGED
@@ -9,6 +9,12 @@ ppc
|
|
9
9
|
----------
|
10
10
|
#How to use it ?
|
11
11
|
|
12
|
+
### Add ppc and savon(version3) to Gemfile
|
13
|
+
```ruby
|
14
|
+
gem "savon", git: "https://github.com/savonrb/savon", branch: "version3"
|
15
|
+
gem "ppc", "~>2.0.3"
|
16
|
+
```
|
17
|
+
|
12
18
|
### Create an objects:
|
13
19
|
```ruby
|
14
20
|
param = {
|
data/lib/ppc.rb
CHANGED
data/lib/ppc/api.rb
CHANGED
@@ -14,17 +14,8 @@ module PPC
|
|
14
14
|
module API
|
15
15
|
|
16
16
|
@map = nil
|
17
|
-
@debug = false
|
18
17
|
@match_types = nil
|
19
18
|
|
20
|
-
def debug_on
|
21
|
-
@debug = true
|
22
|
-
end
|
23
|
-
|
24
|
-
def debug_off
|
25
|
-
@debug = false
|
26
|
-
end
|
27
|
-
|
28
19
|
def request_uri(param = {})
|
29
20
|
raise 'you need build the uri'
|
30
21
|
end
|
@@ -62,7 +53,7 @@ module PPC
|
|
62
53
|
end
|
63
54
|
|
64
55
|
# 是否显示http通信输出
|
65
|
-
http.set_debug_output( $stdout ) if
|
56
|
+
http.set_debug_output( $stdout ) if ENV["DEBUG"]
|
66
57
|
http.use_ssl = true
|
67
58
|
if http_method == 'delete'
|
68
59
|
req = Net::HTTP::Delete.new(uri.path, http_header)
|
data/lib/ppc/api/baidu/bulk.rb
CHANGED
@@ -52,17 +52,17 @@ module PPC
|
|
52
52
|
raise file_id[:failure][0]['message']
|
53
53
|
end
|
54
54
|
|
55
|
-
puts "file_id: #{file_id}" if
|
55
|
+
puts "file_id: #{file_id}" if ENV["DEBUG"]
|
56
56
|
|
57
57
|
loop do
|
58
58
|
state = state( auth, file_id )[:result].to_s
|
59
59
|
raise "invalid file state: #{state}" unless %w(1 2 3 null).include? state
|
60
60
|
break if state == '3'
|
61
|
-
puts "waiting for #{file_id} to be ready. current state:#{state}" if
|
61
|
+
puts "waiting for #{file_id} to be ready. current state:#{state}" if ENV["DEBUG"]
|
62
62
|
sleep 3
|
63
63
|
end
|
64
64
|
|
65
|
-
puts "#{file_id} is ready" if
|
65
|
+
puts "#{file_id} is ready" if ENV["DEBUG"]
|
66
66
|
return path( auth, file_id )
|
67
67
|
|
68
68
|
rescue => e
|
data/lib/ppc/api/baidu/report.rb
CHANGED
@@ -72,67 +72,67 @@ module PPC
|
|
72
72
|
#################################
|
73
73
|
# useful function for operation #
|
74
74
|
#################################
|
75
|
-
def self.query_report( auth, param = {}
|
75
|
+
def self.query_report( auth, param = {} )
|
76
76
|
param[:type] ||= 'query'
|
77
77
|
param[:fields] ||= %w(click impression)
|
78
78
|
param[:level] ||= 'pair'
|
79
79
|
param[:range] ||= 'account'
|
80
80
|
param[:unit] ||= 'day'
|
81
|
-
download_report( auth, param
|
81
|
+
download_report( auth, param )
|
82
82
|
end
|
83
83
|
|
84
|
-
def self.creative_report( auth, param = {}
|
84
|
+
def self.creative_report( auth, param = {} )
|
85
85
|
param[:type] ||= 'creative'
|
86
86
|
param[:fields] ||= %w(impression click cpc cost ctr cpm position conversion)
|
87
87
|
param[:level] ||= 'creative'
|
88
88
|
param[:range] ||= 'creative'
|
89
89
|
param[:unit] ||= 'day'
|
90
|
-
download_report( auth, param
|
90
|
+
download_report( auth, param )
|
91
91
|
end
|
92
92
|
|
93
|
-
def self.keyword_report( auth, param = {}
|
93
|
+
def self.keyword_report( auth, param = {} )
|
94
94
|
param[:type] ||= 'keyword'
|
95
95
|
param[:fields] ||= %w(impression click cpc cost ctr cpm position conversion)
|
96
96
|
param[:level] ||= 'keywordid'
|
97
97
|
param[:range] ||= 'keywordid'
|
98
98
|
param[:unit] ||= 'day'
|
99
|
-
download_report( auth, param
|
99
|
+
download_report( auth, param )
|
100
100
|
end
|
101
101
|
|
102
|
-
def self.account_report( auth, param = {}
|
102
|
+
def self.account_report( auth, param = {} )
|
103
103
|
param[:type] ||= 'account'
|
104
104
|
param[:fields] ||= %w(impression click cpc cost ctr cpm conversion)
|
105
105
|
param[:level] ||= 'account'
|
106
106
|
param[:unit] ||= 'day'
|
107
|
-
download_report( auth, param
|
107
|
+
download_report( auth, param )
|
108
108
|
end
|
109
109
|
|
110
|
-
def self.plan_report( auth, param = {}
|
110
|
+
def self.plan_report( auth, param = {} )
|
111
111
|
param[:type] ||= 'plan'
|
112
112
|
param[:fields] ||= %w(impression click cpc cost ctr cpm conversion)
|
113
113
|
param[:level] ||= 'plan'
|
114
114
|
param[:unit] ||= 'day'
|
115
|
-
download_report( auth, param
|
115
|
+
download_report( auth, param )
|
116
116
|
end
|
117
117
|
|
118
|
-
def self.group_report( auth, param = {}
|
118
|
+
def self.group_report( auth, param = {} )
|
119
119
|
param[:type] ||= 'group'
|
120
120
|
param[:fields] ||= %w(impression click cpc cost ctr cpm conversion)
|
121
121
|
param[:level] ||= 'group'
|
122
122
|
param[:unit] ||= 'day'
|
123
|
-
download_report( auth, param
|
123
|
+
download_report( auth, param )
|
124
124
|
end
|
125
125
|
|
126
|
-
def self.download_report( auth, param
|
126
|
+
def self.download_report( auth, param )
|
127
127
|
p param
|
128
128
|
response = get_id( auth, param )
|
129
129
|
if response[:succ]
|
130
130
|
id = response[:result]
|
131
|
-
p "Got report id:" + id.to_s if
|
131
|
+
p "Got report id:" + id.to_s if ENV["DEBUG"]
|
132
132
|
loop do
|
133
133
|
sleep 2
|
134
134
|
break if get_state( auth, id )[:result].to_s[/(Finished|3)/]
|
135
|
-
p "Report is not generated, waiting..." if
|
135
|
+
p "Report is not generated, waiting..." if ENV["DEBUG"]
|
136
136
|
end
|
137
137
|
|
138
138
|
url = get_url( auth, id )[:result]
|
data/lib/ppc/api/qihu/report.rb
CHANGED
@@ -57,15 +57,15 @@ module PPC
|
|
57
57
|
############################
|
58
58
|
# Interfaces for operation #
|
59
59
|
############################
|
60
|
-
def self.keyword_report( auth, param
|
61
|
-
download_report(auth, 'keyword', param
|
60
|
+
def self.keyword_report( auth, param )
|
61
|
+
download_report(auth, 'keyword', param )
|
62
62
|
end
|
63
63
|
|
64
|
-
def self.creative_report( auth, param
|
65
|
-
download_report(auth, 'creative', param
|
64
|
+
def self.creative_report( auth, param )
|
65
|
+
download_report(auth, 'creative', param )
|
66
66
|
end
|
67
67
|
|
68
|
-
def self.download_report(auth, type, param
|
68
|
+
def self.download_report(auth, type, param )
|
69
69
|
# deal_with time
|
70
70
|
is_now = Date.today == Date.parse(param[:startDate])
|
71
71
|
|
data/lib/ppc/api/sm.rb
CHANGED
@@ -28,7 +28,7 @@ module PPC
|
|
28
28
|
result is the processed response body.
|
29
29
|
'''
|
30
30
|
result = {}
|
31
|
-
result[:succ] = response['header']['desc']
|
31
|
+
result[:succ] = response['header']['desc'][/(success|执行成功)/] ? true : false
|
32
32
|
result[:failure] = response['header']['failures']
|
33
33
|
result[:result] = func[ response['body'][key] ] rescue nil
|
34
34
|
result[:no_quota] = (response['header']['failures']['code'] == '8501') rescue false
|
data/lib/ppc/api/sm/bulk.rb
CHANGED
data/lib/ppc/api/sm/report.rb
CHANGED
@@ -70,63 +70,63 @@ module PPC
|
|
70
70
|
#################################
|
71
71
|
# useful function for operation #
|
72
72
|
#################################
|
73
|
-
def self.query_report( auth, param = {}
|
73
|
+
def self.query_report( auth, param = {} )
|
74
74
|
param[:type] ||= 'query'
|
75
75
|
param[:fields] ||= %w(click impression)
|
76
76
|
param[:range] ||= 'account'
|
77
77
|
param[:unit] ||= 'day'
|
78
|
-
download_report( auth, param
|
78
|
+
download_report( auth, param )
|
79
79
|
end
|
80
80
|
|
81
|
-
def self.creative_report( auth, param = {}
|
81
|
+
def self.creative_report( auth, param = {} )
|
82
82
|
param[:type] ||= 'creative'
|
83
83
|
param[:fields] ||= %w(click impression)
|
84
84
|
param[:range] ||= 'account'
|
85
85
|
param[:unit] ||= 'day'
|
86
|
-
download_report( auth, param
|
86
|
+
download_report( auth, param )
|
87
87
|
end
|
88
88
|
|
89
|
-
def self.keyword_report( auth, param = {}
|
89
|
+
def self.keyword_report( auth, param = {} )
|
90
90
|
param[:type] ||= 'keyword'
|
91
91
|
param[:fields] ||= %w(click impression cost cpc ctr)
|
92
92
|
param[:range] ||= 'account'
|
93
93
|
param[:unit] ||= 'day'
|
94
|
-
download_report( auth, param
|
94
|
+
download_report( auth, param )
|
95
95
|
end
|
96
96
|
|
97
|
-
def self.account_report( auth, param = {}
|
97
|
+
def self.account_report( auth, param = {} )
|
98
98
|
param[:type] ||= 'account'
|
99
99
|
param[:fields] ||= %w(click impression cost cpc ctr)
|
100
100
|
param[:range] ||= 'account'
|
101
101
|
param[:unit] ||= 'day'
|
102
|
-
download_report( auth, param
|
102
|
+
download_report( auth, param )
|
103
103
|
end
|
104
104
|
|
105
|
-
def self.plan_report( auth, param = {}
|
105
|
+
def self.plan_report( auth, param = {} )
|
106
106
|
param[:type] ||= 'plan'
|
107
107
|
param[:fields] ||= %w(click impression cost cpc ctr)
|
108
108
|
param[:range] ||= 'plan'
|
109
109
|
param[:unit] ||= 'day'
|
110
|
-
download_report( auth, param
|
110
|
+
download_report( auth, param )
|
111
111
|
end
|
112
112
|
|
113
|
-
def self.group_report( auth, param = {}
|
113
|
+
def self.group_report( auth, param = {} )
|
114
114
|
param[:type] ||= 'group'
|
115
115
|
param[:fields] ||= %w(click impression cost cpc ctr)
|
116
116
|
param[:range] ||= 'group'
|
117
117
|
param[:unit] ||= 'day'
|
118
|
-
download_report( auth, param
|
118
|
+
download_report( auth, param )
|
119
119
|
end
|
120
120
|
|
121
|
-
def self.download_report( auth, param
|
121
|
+
def self.download_report( auth, param )
|
122
122
|
response = get_id( auth, param )
|
123
123
|
if response[:succ]
|
124
124
|
id = response[:result]
|
125
|
-
p "Got report id:" + id.to_s if
|
125
|
+
p "Got report id:" + id.to_s if ENV["DEBUG"]
|
126
126
|
loop do
|
127
127
|
sleep 2
|
128
128
|
break if get_state( auth, id )[:result] == 'FINISHED'
|
129
|
-
p "Report is not generated, waiting..." if
|
129
|
+
p "Report is not generated, waiting..." if ENV["DEBUG"]
|
130
130
|
end
|
131
131
|
fileId = get_fileId(auth, id)[:result]
|
132
132
|
return get_file(auth, fileId).force_encoding("utf-8")
|
data/lib/ppc/api/sogou.rb
CHANGED
@@ -31,14 +31,14 @@ module PPC
|
|
31
31
|
}
|
32
32
|
operation.body = { (method+'Request').to_sym => params }
|
33
33
|
# debug print
|
34
|
-
debug_print( operation ) if
|
34
|
+
debug_print( operation ) if ENV["DEBUG"]
|
35
35
|
result = operation.call.hash[:envelope]
|
36
36
|
#extract header and body
|
37
37
|
response = { }
|
38
38
|
response[:header] = result[:header][:res_header]
|
39
39
|
response[:body] = result[:body][ (method + "Response").snake_case.to_sym ]
|
40
40
|
# debug print
|
41
|
-
puts response if
|
41
|
+
puts response if ENV["DEBUG"]
|
42
42
|
return response
|
43
43
|
end
|
44
44
|
|
data/lib/ppc/api/sogou/bulk.rb
CHANGED
@@ -67,7 +67,7 @@ module PPC
|
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
|
-
def self.rank_report(auth, device = 0
|
70
|
+
def self.rank_report(auth, device = 0 )
|
71
71
|
url = download_cpc_rank(auth, device)[:result]
|
72
72
|
file = "sogou_rank_#{Time.now.to_i}.zip"
|
73
73
|
File.open(file, "w"){|f| f.puts open(url).read}
|
data/lib/ppc/api/sogou/report.rb
CHANGED
@@ -64,16 +64,16 @@ module PPC
|
|
64
64
|
###########################
|
65
65
|
# intreface for Operation #
|
66
66
|
###########################
|
67
|
-
def self.download_report( auth, param
|
67
|
+
def self.download_report( auth, param )
|
68
68
|
response = get_id( auth, param )
|
69
69
|
if response[:succ]
|
70
70
|
id = response[:result]
|
71
|
-
p "Got report id:" + id.to_s if
|
71
|
+
p "Got report id:" + id.to_s if ENV["DEBUG"]
|
72
72
|
times = 0
|
73
73
|
loop do
|
74
74
|
raise "The speed of get_status is too slow." if (times += 1) > 10
|
75
75
|
break if get_state( auth, id )[:result] == 'Finished'
|
76
|
-
p "Report is not generated, waiting..." if
|
76
|
+
p "Report is not generated, waiting..." if ENV["DEBUG"]
|
77
77
|
sleep 5
|
78
78
|
end
|
79
79
|
|
@@ -84,47 +84,47 @@ module PPC
|
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
|
-
def self.query_report( auth, param = {}
|
87
|
+
def self.query_report( auth, param = {} )
|
88
88
|
param[:type] ||= 'query'
|
89
89
|
param[:fields] ||= %w(click)
|
90
90
|
param[:range] ||= 'account'
|
91
91
|
param[:unit] ||= 'day'
|
92
|
-
download_report( auth, param
|
92
|
+
download_report( auth, param )
|
93
93
|
end
|
94
94
|
|
95
|
-
def self.creative_report( auth, param = {}
|
95
|
+
def self.creative_report( auth, param = {} )
|
96
96
|
param[:type] ||= 'creative'
|
97
97
|
param[:fields] ||= %w( cost cpc click impression ctr )
|
98
98
|
param[:range] ||= 'account'
|
99
|
-
download_report( auth, param
|
99
|
+
download_report( auth, param )
|
100
100
|
end
|
101
101
|
|
102
|
-
def self.keyword_report( auth, param = {}
|
102
|
+
def self.keyword_report( auth, param = {} )
|
103
103
|
param[:type] ||= 'keyword'
|
104
104
|
param[:fields] ||= %w( cost cpc click impression ctr )
|
105
105
|
param[:range] ||= 'account'
|
106
|
-
download_report( auth, param
|
106
|
+
download_report( auth, param )
|
107
107
|
end
|
108
108
|
|
109
|
-
def self.account_report( auth, param = {}
|
109
|
+
def self.account_report( auth, param = {} )
|
110
110
|
param[:type] ||= 'account'
|
111
111
|
param[:fields] ||= %w( cost cpc click impression ctr )
|
112
112
|
param[:range] ||= 'account'
|
113
|
-
download_report( auth, param
|
113
|
+
download_report( auth, param )
|
114
114
|
end
|
115
115
|
|
116
|
-
def self.plan_report( auth, param = {}
|
116
|
+
def self.plan_report( auth, param = {} )
|
117
117
|
param[:type] ||= 'plan'
|
118
118
|
param[:fields] ||= %w( cost cpc click impression ctr )
|
119
119
|
param[:range] ||= 'plan'
|
120
|
-
download_report( auth, param
|
120
|
+
download_report( auth, param )
|
121
121
|
end
|
122
122
|
|
123
|
-
def self.group_report( auth, param = {}
|
123
|
+
def self.group_report( auth, param = {} )
|
124
124
|
param[:type] ||= 'group'
|
125
125
|
param[:fields] ||= %w( cost cpc click impression ctr)
|
126
126
|
param[:range] ||= 'group'
|
127
|
-
download_report( auth, param
|
127
|
+
download_report( auth, param )
|
128
128
|
end
|
129
129
|
|
130
130
|
end # Repost
|
data/lib/ppc/operation/report.rb
CHANGED
@@ -2,36 +2,36 @@ module PPC
|
|
2
2
|
module Operation
|
3
3
|
module Report
|
4
4
|
|
5
|
-
def download_report( param = {}
|
6
|
-
call( "report" ).download_report( @auth, param
|
5
|
+
def download_report( param = {} )
|
6
|
+
call( "report" ).download_report( @auth, param )
|
7
7
|
end
|
8
8
|
|
9
|
-
def query_report( param = {}
|
10
|
-
call( "report" ).query_report( @auth, param
|
9
|
+
def query_report( param = {} )
|
10
|
+
call( "report" ).query_report( @auth, param )
|
11
11
|
end
|
12
12
|
|
13
|
-
def creative_report( param = {}
|
14
|
-
call( "report" ).creative_report( @auth, param
|
13
|
+
def creative_report( param = {} )
|
14
|
+
call( "report" ).creative_report( @auth, param )
|
15
15
|
end
|
16
16
|
|
17
|
-
def keyword_report( param = {}
|
18
|
-
call( "report" ).keyword_report( @auth, param
|
17
|
+
def keyword_report( param = {} )
|
18
|
+
call( "report" ).keyword_report( @auth, param )
|
19
19
|
end
|
20
20
|
|
21
|
-
def account_report( param = {}
|
22
|
-
call( "report" ).account_report( @auth, param
|
21
|
+
def account_report( param = {} )
|
22
|
+
call( "report" ).account_report( @auth, param )
|
23
23
|
end
|
24
24
|
|
25
|
-
def plan_report( param = {}
|
26
|
-
call( "report" ).plan_report( @auth, param
|
25
|
+
def plan_report( param = {} )
|
26
|
+
call( "report" ).plan_report( @auth, param )
|
27
27
|
end
|
28
28
|
|
29
|
-
def group_report( param = {}
|
30
|
-
call( "report" ).group_report( @auth, param
|
29
|
+
def group_report( param = {} )
|
30
|
+
call( "report" ).group_report( @auth, param )
|
31
31
|
end
|
32
32
|
|
33
|
-
def rank_report( device = 0
|
34
|
-
call( "bulk" ).rank_report( @auth, device
|
33
|
+
def rank_report( device = 0 )
|
34
|
+
call( "bulk" ).rank_report( @auth, device )
|
35
35
|
end
|
36
36
|
|
37
37
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ppc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chienli Ma
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2016-
|
14
|
+
date: 2016-11-28 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: httparty
|