baidu-tuiguang 0.1.1 → 0.1.2

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: af00a2da8c08836a6f99a6153de28f0ad0a0dbd7
4
- data.tar.gz: 9467ab33800680b41ad7b47c1f5ef00a4776ca12
3
+ metadata.gz: 8f7cfd9e817799bddadf9fc3a85c0f777e091b5e
4
+ data.tar.gz: dfcb1d19776ae3245cdd277c26b2d4b2a08bde59
5
5
  SHA512:
6
- metadata.gz: aa164a9752e962c21651827333b4eff42b65c803aa04a017f87bb6f376aac14fb722dbaba7a38f5dea6c90627dd0d27691f20ec29e2734a769b9d2a8a2c091a5
7
- data.tar.gz: f039446cef6f9738616a18b0cf66638be954bb62d1c4217837a9f81b039e24899c246bab2578234548cb05cbae4774664e3f220623df7111d3c270608e6dc727
6
+ metadata.gz: 828310e8a8303e2a4ef6f63fb68218939dc7844221367020912e63a0a30fecef30d5bb5e7ad7addcbf6308daaebc112363122494fd100245f6382416e5bb9f17
7
+ data.tar.gz: a38160ed804790fce2e22f6414fa9138d1d1ab4741f10ac9564f0914032cf7ecd6cb760f595a53b3a5cd516afbb73990cae16d7e80dbc386f50967496daa3ce5
@@ -9,17 +9,22 @@ require 'date'
9
9
  module Baidu
10
10
  module Tuiguang
11
11
  class Action
12
- attr_reader :req_url
13
- attr_reader :req_params
14
- attr_reader :resp
12
+ attr_reader :url
13
+ attr_reader :params
14
+ attr_reader :res
15
15
 
16
16
  def initialize(cookies)
17
17
  @cookies = cookies
18
18
  end
19
19
 
20
+ def basic_info
21
+ data = request("path": 'GET/authInfo', "params": {})
22
+ {'username' => data['username']}
23
+ end
24
+
20
25
  def plans(page = 1, page_size = 20)
21
26
  today = Time.now.to_date
22
- data = request(path: 'vega/GET/mtllist/plan', params: {"fields": ["planid", "pausestat", "planname", "shows", "clks", "paysum", "trans", "avgprice", "plandynamicideastat", "acctdynamicideastat", "mPriceFactor", "planstat", "remarketingstat", "deviceprefer", "wregion", "qrstat1", "phonetrans", "allipblackcnt", "clkrate", "wbudget", "plancyc", "showprob", "allnegativecnt", "showpay", "adtype", "acctdynamictagsublinkstat", "acctdynamictitlestat", "acctdynamichotredirectstat", "plandynamictagsublinkstat", "plandynamictitlestat", "plandynamichotredirectstat", "plandynamictitlelist", "plandynamictitleabstract", "acctdynamictitlelist", "acctdynamictitleabstract", "acctscenarizedstatus", "planscenarizedphrasestatus", "atstatus", "atbid", "atbudget", "bidprefer", "pcpricefactor", "inpeople", "remarketingPauseStat", "robotAPlanState"], "levelCond": {"userid": "23597360"}, "pageNo": page, "pageSize": page_size, "startTime": today, "endTime": today})
27
+ data = request(path: 'vega/GET/mtllist/plan', params: {"fields": ["planid", "pausestat", "planname", "shows", "clks", "paysum", "trans", "avgprice", "plandynamicideastat", "acctdynamicideastat", "mPriceFactor", "planstat", "remarketingstat", "deviceprefer", "wregion", "qrstat1", "phonetrans", "allipblackcnt", "clkrate", "wbudget", "plancyc", "showprob", "allnegativecnt", "showpay", "adtype", "acctdynamictagsublinkstat", "acctdynamictitlestat", "acctdynamichotredirectstat", "plandynamictagsublinkstat", "plandynamictitlestat", "plandynamichotredirectstat", "plandynamictitlelist", "plandynamictitleabstract", "acctdynamictitlelist", "acctdynamictitleabstract", "acctscenarizedstatus", "planscenarizedphrasestatus", "atstatus", "atbid", "atbudget", "bidprefer", "pcpricefactor", "inpeople", "remarketingPauseStat", "robotAPlanState"], "levelCond": {"userid": cookies_params['__cas__id__3']}, "pageNo": page, "pageSize": page_size, "startTime": today, "endTime": today})
23
28
  result = {'data' => [], 'count' => data['totalCount']}
24
29
  data['listData'].each do |item|
25
30
  result['data'] << {
@@ -91,23 +96,39 @@ module Baidu
91
96
  end
92
97
 
93
98
  def keyword_pause(keyword_id)
94
- request("path": 'vega/MOD/keyword', "params": {"winfoid": [keyword_id.to_i], "items": {"pausestat": 1}})
99
+ keyword_pause_and_enable(keyword_id)
95
100
  end
96
101
 
97
102
  def keyword_enable(keyword_id)
98
- request("path": 'vega/MOD/keyword', "params": {"winfoid": [keyword_id.to_i], "items": {"pausestat": 0}})
103
+ keyword_pause_and_enable(keyword_id, false)
104
+ end
105
+
106
+ def keywords_pause(keyword_ids = [])
107
+ keywords_pause_and_enable(keyword_ids)
108
+ end
109
+
110
+ def keywords_enable(keyword_ids = [])
111
+ keywords_pause_and_enable(keyword_ids, false)
112
+ end
113
+
114
+ def keyword_pause_and_enable(keyword_id, pause = true)
115
+ request("path": 'vega/MOD/keyword', "params": {"winfoid": [keyword_id.to_i], "items": {"pausestat": pause ? 1 : 0}})
116
+ end
117
+
118
+ def keywords_pause_and_enable(keyword_ids = [], pause = true)
119
+ request("path": 'vega/MOD/adkeyword', "params": {"checkAll": false, "mtlCond": {"levelCond": {"userid": cookies_params['__cas__id__3']}}, "mtlIds": keyword_ids.map {|keyword_id| keyword_id.to_s}, "items": {"pausestat": pause}})
99
120
  end
100
121
 
101
122
  def request(params = {})
102
- @req_params = params
103
123
  params.merge!(
104
124
  "userid": cookies_params['__cas__id__3'],
105
- "token": cookies_params['__cas__st__3'],
106
- "reqid": "",
107
- "eventId": ""
125
+ "token": cookies_params['__cas__st__3']
108
126
  )
127
+ @params = params
109
128
  params[:"params"] = params[:"params"].to_json
110
- url = URI(@req_url = "http://fengchao.baidu.com/nirvana/request.ajax?#{URI.encode_www_form(path: params[:"path"], reqid: '')}")
129
+ url = URI('http://fengchao.baidu.com/nirvana/request.ajax')
130
+ url.query = URI.encode_www_form(path: params[:"path"])
131
+ @url = url.to_s
111
132
  http = Net::HTTP.new(url.host, url.port)
112
133
  request = Net::HTTP::Post.new(url)
113
134
  request["accept"] = '*/*'
@@ -125,13 +146,19 @@ module Baidu
125
146
  request.body = URI.encode_www_form(params)
126
147
  response = http.request(request)
127
148
  raise RequestError, "HTTP Response: #{response.code} #{response.message}" unless response.is_a?(Net::HTTPSuccess)
128
- @resp = response.read_body
149
+ @res = response.read_body
129
150
  if response['Content-Encoding'] && response['Content-Encoding'].include?('gzip')
130
- @resp = Zlib::GzipReader.new(StringIO.new(@resp)).read
151
+ @res = Zlib::GzipReader.new(StringIO.new(@res)).read
131
152
  end
132
- result = JSON.parse(@resp)
153
+ result = JSON.parse(@res)
133
154
  raise LoginExpired if result['redirect'] && result['redirecturl'] && result['redirecturl'].include?('http://cas.baidu.com')
134
- raise Error.new result['error'], result['status'] unless result['status'].to_i == 200
155
+ unless result['status'].to_i == 200
156
+ if params[:"path"] == 'vega/MOD/keyword'
157
+ raise Error.new result['error'].map {|k, v| v['winfoid']['message']}.join('; '), result['status']
158
+ else
159
+ raise Error.new result['error'], result['status']
160
+ end
161
+ end
135
162
  result['data']
136
163
  end
137
164
 
@@ -142,7 +169,7 @@ module Baidu
142
169
  @cookies.split(%r(; ?)).each do |cooky|
143
170
  items = cooky.split('=', 2)
144
171
  params[items[0]] = items[1]
145
- end
172
+ end unless @cookies.nil?
146
173
  params
147
174
  end
148
175
  end
@@ -1,5 +1,5 @@
1
1
  module Baidu
2
2
  module Tuiguang
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: baidu-tuiguang
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xiao Jie
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-21 00:00:00.000000000 Z
11
+ date: 2017-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler