get_campaign_daily.py 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. Created on Fri Jun 5 17:00:45 2020
  5. @author: chencong
  6. """
  7. import json
  8. import random
  9. import requests
  10. import time
  11. from datetime import datetime
  12. import pymysql
  13. import token_list as tl
  14. from concurrent.futures import ThreadPoolExecutor
  15. max_workers=5
  16. from util import date_util
  17. def adcreatives_get(access_token,account_id,fields) : #获取创意
  18. interface = 'adcreatives/get'
  19. url = 'https://api.e.qq.com/v1.1/' + interface
  20. page =1
  21. list1 = []
  22. common_parameters = {
  23. 'access_token': access_token,
  24. 'timestamp': int(time.time()),
  25. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  26. 'fields':fields
  27. }
  28. parameters = {
  29. "account_id": account_id,
  30. "page": page,
  31. "page_size": 100,
  32. "is_deleted": False
  33. }
  34. parameters.update(common_parameters)
  35. for k in parameters:
  36. if type(parameters[k]) is not str:
  37. parameters[k] = json.dumps(parameters[k])
  38. r = requests.get(url, params = parameters).json()
  39. if 'data' in r.keys():
  40. list1 = list1+r['data']['list']
  41. total_page=r['data']['page_info']['total_page']
  42. if total_page>1:
  43. for page in range(2,total_page+1):
  44. common_parameters = {
  45. 'access_token': access_token,
  46. 'timestamp': int(time.time()),
  47. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  48. 'fields':fields
  49. }
  50. parameters = {
  51. "account_id": account_id,
  52. "page": page,
  53. "page_size": 100,
  54. "is_deleted": False
  55. }
  56. parameters.update(common_parameters)
  57. for k in parameters:
  58. if type(parameters[k]) is not str:
  59. parameters[k] = json.dumps(parameters[k])
  60. r = requests.get(url, params = parameters).json()
  61. if 'data' in r.keys():
  62. list1 = list1+r['data']['list']
  63. return list1
  64. #print(adcreatives_get('3bbbae77bed9fcde94cc0f1742a18c6e',11436446,('campaign_id','adcreative_id','adcreative_name','adcreative_elements','promoted_object_type','page_type','page_spec','link_page_spec','universal_link_url','promoted_object_id')))
  65. def ads_get(access_token,account_id,fields) : #获取广告
  66. interface = 'ads/get'
  67. url = 'https://api.e.qq.com/v1.1/' + interface
  68. common_parameters = {
  69. 'access_token': access_token,
  70. 'timestamp': int(time.time()),
  71. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  72. 'fields':fields
  73. }
  74. parameters = {
  75. "account_id": account_id,
  76. "page": 1,
  77. "page_size": 10,
  78. "is_deleted": False
  79. }
  80. parameters.update(common_parameters)
  81. for k in parameters:
  82. if type(parameters[k]) is not str:
  83. parameters[k] = json.dumps(parameters[k])
  84. r = requests.get(url, params = parameters)
  85. return r.json()
  86. #print(ads_get('2a674bef201314d338be30420369671f',14985162,('ad_id','ad_name','adcreative_id','adcreative')))
  87. def wechat_pages_get(access_token,account_id,page_id,fields) : #获取微信原生页
  88. interface = 'wechat_pages/get'
  89. url = 'https://api.e.qq.com/v1.1/' + interface
  90. common_parameters = {
  91. 'access_token': access_token,
  92. 'timestamp': int(time.time()),
  93. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  94. 'fields':fields
  95. }
  96. parameters = {
  97. "account_id": account_id,
  98. "filtering":
  99. [
  100. {
  101. "field": "page_id",
  102. "operator": "EQUALS",
  103. "values":
  104. [
  105. page_id
  106. ]
  107. }
  108. ],
  109. "page": 1,
  110. "page_size": 10
  111. }
  112. parameters.update(common_parameters)
  113. for k in parameters:
  114. if type(parameters[k]) is not str:
  115. parameters[k] = json.dumps(parameters[k])
  116. r = requests.get(url, params = parameters)
  117. return r.json()
  118. #print(wechat_pages_get('2a674bef201314d338be30420369671f',14985162,1900495593,('page_id','page_name','created_time','last_modified_time','page_template_id','preview_url','page_type','source_type')))
  119. def adgroups_get(access_token,account_id,fields) : #获取广告组
  120. interface = 'adgroups/get'
  121. url = 'https://api.e.qq.com/v1.1/' + interface
  122. common_parameters = {
  123. 'access_token': access_token,
  124. 'timestamp': int(time.time()),
  125. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  126. 'fields':fields
  127. }
  128. parameters = {
  129. "account_id": account_id,
  130. "page": 4,
  131. "page_size": 100,
  132. "is_deleted": False
  133. }
  134. parameters.update(common_parameters)
  135. for k in parameters:
  136. if type(parameters[k]) is not str:
  137. parameters[k] = json.dumps(parameters[k])
  138. r = requests.get(url, params = parameters)
  139. return r.json()
  140. #print(adgroups_get('2a674bef201314d338be30420369671f',14985162,('campaign_id','adgroup_id','adgroup_name','optimization_goal','billing_event','bid_amount','daily_budget','targeting','begin_date','end_date','time_series','bid_strategy','cold_start_audience','auto_audience','expand_enabled','expand_targeting','deep_conversion_spec','deep_optimization_action_type','conversion_id','deep_conversion_behavior_bid','deep_conversion_worth_rate','system_status')))
  141. def images_get(access_token,account_id,fields) : #获取图片信息
  142. import json
  143. import random
  144. import requests
  145. import time
  146. interface = 'images/get'
  147. url = 'https://api.e.qq.com/v1.1/' + interface
  148. page = 1
  149. list1 = []
  150. common_parameters = {
  151. 'access_token': access_token,
  152. 'timestamp': int(time.time()),
  153. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  154. 'fields':fields
  155. }
  156. parameters = {
  157. "account_id": account_id,
  158. "page": page,
  159. "page_size": 100
  160. }
  161. parameters.update(common_parameters)
  162. for k in parameters:
  163. if type(parameters[k]) is not str:
  164. parameters[k] = json.dumps(parameters[k])
  165. r = requests.get(url, params = parameters).json()
  166. if 'data' in r.keys():
  167. list1 = list1+r['data']['list']
  168. total_page=r['data']['page_info']['total_page']
  169. if total_page>1:
  170. for page in range(2,total_page+1):
  171. common_parameters = {
  172. 'access_token': access_token,
  173. 'timestamp': int(time.time()),
  174. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  175. 'fields':fields
  176. }
  177. parameters = {
  178. "account_id": account_id,
  179. "page": page,
  180. "page_size": 100
  181. }
  182. parameters.update(common_parameters)
  183. for k in parameters:
  184. if type(parameters[k]) is not str:
  185. parameters[k] = json.dumps(parameters[k])
  186. r = requests.get(url, params = parameters).json()
  187. if 'data' in r.keys():
  188. list1 = list1+r['data']['list']
  189. return list1
  190. #print(images_get('2a674bef201314d338be30420369671f',14985162,('image_id','preview_url')))
  191. def campaigns_get(access_token,account_id,fields) : #获取推广计划
  192. import json
  193. import random
  194. import requests
  195. import time
  196. interface = 'campaigns/get'
  197. url = 'https://api.e.qq.com/v1.1/' + interface
  198. page = 1
  199. list1 = []
  200. common_parameters = {
  201. 'access_token': access_token,
  202. 'timestamp': int(time.time()),
  203. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  204. 'fields':fields
  205. }
  206. parameters = {
  207. "account_id": account_id,
  208. "page": page,
  209. "page_size": 100,
  210. "is_deleted": False
  211. }
  212. parameters.update(common_parameters)
  213. for k in parameters:
  214. if type(parameters[k]) is not str:
  215. parameters[k] = json.dumps(parameters[k])
  216. r = requests.get(url, params = parameters).json()
  217. if 'data' in r.keys():
  218. list1 = list1+r['data']['list']
  219. total_page=r['data']['page_info']['total_page']
  220. if total_page>1:
  221. for page in range(2,total_page+1):
  222. common_parameters = {
  223. 'access_token': access_token,
  224. 'timestamp': int(time.time()),
  225. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  226. 'fields':fields
  227. }
  228. parameters = {
  229. "account_id": account_id,
  230. "page": page,
  231. "page_size": 100,
  232. "is_deleted": False
  233. }
  234. parameters.update(common_parameters)
  235. for k in parameters:
  236. if type(parameters[k]) is not str:
  237. parameters[k] = json.dumps(parameters[k])
  238. r = requests.get(url, params = parameters).json()
  239. if 'data' in r.keys():
  240. list1 = list1+r['data']['list']
  241. return list1
  242. #aa=tl.token_list_vx[-2]
  243. #print(campaigns_get(aa[2],aa[0],('campaign_id','campaign_name','configured_status','campaign_type','promoted_object_type','daily_budget','budget_reach_date','created_time','last_modified_time','speed_mode','is_deleted')))
  244. def daily_reports_get(access_token,account_id,level,start_date,end_date,fields) : #获取wx投放计划日报数据
  245. interface = 'daily_reports/get'
  246. url = 'https://api.e.qq.com/v1.1/' + interface
  247. common_parameters = {
  248. 'access_token': access_token,
  249. 'timestamp': int(time.time()),
  250. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  251. 'fields':fields
  252. }
  253. parameters = {
  254. "account_id": account_id,
  255. "level": level,
  256. "date_range":
  257. {
  258. "start_date": start_date,
  259. "end_date": end_date
  260. },
  261. "page": 1,
  262. "page_size": 1000,
  263. "fields":
  264. [
  265. ]
  266. }
  267. parameters.update(common_parameters)
  268. for k in parameters:
  269. if type(parameters[k]) is not str:
  270. parameters[k] = json.dumps(parameters[k])
  271. r = requests.get(url, params = parameters)
  272. return r.json()
  273. def daily_qq_reports_get(access_token,account_id,compaign_id,level,start_date,end_date,fields) : #获取gdt投放计划日报数据
  274. interface = 'daily_reports/get'
  275. url = 'https://api.e.qq.com/v1.1/' + interface
  276. common_parameters = {
  277. 'access_token': access_token,
  278. 'timestamp': int(time.time()),
  279. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  280. 'fields':fields
  281. }
  282. parameters = {
  283. "account_id": account_id,
  284. "filtering":
  285. [
  286. {
  287. "field": "campaign_id",
  288. "operator": "EQUALS",
  289. "values":
  290. [
  291. compaign_id
  292. ]
  293. }
  294. ],
  295. "level": level,
  296. "date_range":
  297. {
  298. "start_date": start_date,
  299. "end_date": end_date
  300. },
  301. "page": 1,
  302. "page_size": 1000,
  303. "fields":
  304. [
  305. ]
  306. }
  307. parameters.update(common_parameters)
  308. for k in parameters:
  309. if type(parameters[k]) is not str:
  310. parameters[k] = json.dumps(parameters[k])
  311. r = requests.get(url, params = parameters)
  312. return r.json()
  313. def mysql_insert_daily_vx_campaign(data):
  314. db = pymysql.connect('rm-bp1c9cj79872tx3aaro.mysql.rds.aliyuncs.com','superc','Cc719199895','quchen_text')
  315. cursor = db.cursor()
  316. time1 = time.time()
  317. sql = 'insert ignore into daily_vx_campaign (account_id,date,campaign_id,view_count,cost,ctr,cpc,order_roi,thousand_display_price,valid_click_count,official_account_follow_count,conversions_count,official_account_follow_rate,conversions_rate,order_count,order_rate,order_unit_price,first_day_order_amount) values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);'
  318. try:
  319. cursor.executemany(sql,data)
  320. db.commit()
  321. cost_time =round((time.time()-time1)/60,1)
  322. print('insert_daily_vx_campaign access',len(data),'cost_minutes:',cost_time)
  323. except:
  324. db.rollback()
  325. print('insert_daily_vx_campaign defeat')
  326. def mysql_insert_daily_qq_campaign(data):
  327. db = pymysql.connect('rm-bp1c9cj79872tx3aaro.mysql.rds.aliyuncs.com','superc','Cc719199895','quchen_text')
  328. cursor = db.cursor()
  329. time1 = time.time()
  330. sql = 'insert ignore into daily_qq_campaign (account_id,date,campaign_id,view_count,thousand_display_price,valid_click_count,ctr,cpc,cost,order_roi) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)'
  331. try:
  332. cursor.executemany(sql,data)
  333. db.commit()
  334. cost_time =round((time.time()-time1)/60,1)
  335. print('insert_daily_qq_campaign access',len(data),'cost_minutes:',cost_time)
  336. except:
  337. db.rollback()
  338. print('insert_daily_qq_campaign defeat')
  339. def mysql_insert_campaign_vx(data,data2):
  340. db = pymysql.connect('rm-bp1c9cj79872tx3aaro.mysql.rds.aliyuncs.com','superc','Cc719199895','quchen_text')
  341. cursor = db.cursor()
  342. time1 = time.time()
  343. sql = 'insert ignore into campaign_vx (campaign_id,campaign_name,configured_status,campaign_type,promoted_object_type,daily_budget,created_time,last_modified_time,account_id) values (%s,%s,%s,%s,%s,%s,%s,%s,%s)'
  344. sql2 = 'delete from campaign_vx where campaign_id =%s '
  345. try:
  346. cursor.executemany(sql2,data2)
  347. db.commit()
  348. print('delete campaign_vx access',len(data2))
  349. except:
  350. db.rollback()
  351. print('delete campaign_vx defeat')
  352. try:
  353. cursor.executemany(sql,data)
  354. db.commit()
  355. cost_time =round((time.time()-time1)/60,1)
  356. print('insert_campaign_vx access',len(data),'cost_minutes:',cost_time)
  357. except:
  358. db.rollback()
  359. print('insert_campaign_vx defeat')
  360. def mysql_insert_adcreative(data):
  361. db = pymysql.connect('rm-bp1c9cj79872tx3aaro.mysql.rds.aliyuncs.com','superc','Cc719199895','quchen_text')
  362. cursor = db.cursor()
  363. time1 = time.time()
  364. sql = 'insert ignore into adcreative (campaign_id,adcreative_id,adcreative_name,image_id,title,promoted_object_type,page_type,page_id,link_page_id,promoted_object_id) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)'
  365. try:
  366. cursor.executemany(sql,data)
  367. db.commit()
  368. cost_time =round((time.time()-time1)/60,1)
  369. print('insert_adcreative access',len(data),'cost_minutes:',cost_time)
  370. except:
  371. db.rollback()
  372. print('insert_adcreative defeat')
  373. def mysql_insert_image(data):
  374. db = pymysql.connect('rm-bp1c9cj79872tx3aaro.mysql.rds.aliyuncs.com','superc','Cc719199895','quchen_text')
  375. cursor = db.cursor()
  376. time1 = time.time()
  377. sql = 'insert ignore into image (image_id,preview_url,account_id) values (%s,%s,%s)'
  378. try:
  379. cursor.executemany(sql,data)
  380. db.commit()
  381. cost_time =round((time.time()-time1)/60,1)
  382. print('insert image access',len(data),'cost_minutes:',cost_time)
  383. except:
  384. db.rollback()
  385. print('insert image defeat')
  386. def v_data(x,st,et,q,r,p):
  387. account_id = x[0]
  388. access_token = x[2]
  389. start_date = time.strftime("%Y-%m-%d", time.localtime(st))
  390. end_date = time.strftime("%Y-%m-%d", time.localtime(et))
  391. l = campaigns_get(access_token, account_id, (
  392. 'campaign_id', 'campaign_name', 'configured_status', 'campaign_type', 'promoted_object_type', 'daily_budget',
  393. 'budget_reach_date', 'created_time', 'last_modified_time', 'speed_mode', 'is_deleted'))
  394. if len(l) > 0:
  395. for ll in l:
  396. ll['account_id'] = account_id
  397. if ll['created_time'] > st or ll['last_modified_time'] > st:
  398. q.append(ll['campaign_id'])
  399. lt = tuple(ll.values())
  400. p.append(lt)
  401. data_list = daily_reports_get(access_token, account_id, 'REPORT_LEVEL_CAMPAIGN_WECHAT', start_date, end_date, (
  402. 'account_id', 'date', 'campaign_id', 'view_count', 'cost', 'ctr', 'cpc', 'order_roi', 'thousand_display_price',
  403. 'valid_click_count', 'official_account_follow_count', 'conversions_count', 'official_account_follow_rate',
  404. 'conversions_rate', 'order_count', 'order_rate', 'order_unit_price', 'first_day_order_amount'))
  405. if 'data' in data_list.keys():
  406. for y in data_list['data']['list']:
  407. y['account_id'] = account_id
  408. y = tuple(y.values())
  409. r.append(y)
  410. def get_daily_vx_campaign(st,et): #获取投放计划、日报数据
  411. token_list_v = tl.token_list_vx
  412. r = []
  413. p = []
  414. q=[]
  415. executor = ThreadPoolExecutor(max_workers=max_workers)
  416. for x in token_list_v:
  417. executor.submit(v_data,x,st,et,q,r,p)
  418. executor.shutdown()
  419. mysql_insert_daily_vx_campaign(r)
  420. mysql_insert_campaign_vx(p,q)
  421. def get_daily_qq_campaign(st,et):
  422. token_list_q = tl.token_list_qq
  423. r=()
  424. for x in token_list_q:
  425. account_id = x[0]
  426. access_token = x[2]
  427. start_date = st
  428. end_date = et
  429. l = campaigns_get(access_token,account_id,('campaign_id','campaign_name','configured_status','campaign_type','promoted_object_type','daily_budget','budget_reach_date','created_time','last_modified_time','speed_mode','is_deleted'))
  430. for ll in l:
  431. campaign_id =ll['campaign_id']
  432. data_list = daily_qq_reports_get(access_token,account_id,campaign_id,'REPORT_LEVEL_CAMPAIGN',start_date,end_date,('account_id','date','campaign_id','view_count','thousand_display_price','valid_click_count','ctr','cpc','cost','order_roi'))
  433. if len(data_list['data']['list'])>0:
  434. print(data_list)
  435. # print(l)
  436. if 'data' in data_list.keys():
  437. for y in data_list['data']['list']:
  438. y = tuple(y.values())
  439. r=r+((y),)
  440. def get_campaign_update_list():
  441. db = pymysql.connect('rm-bp1c9cj79872tx3aaro.mysql.rds.aliyuncs.com','superc','Cc719199895','quchen_text')
  442. cursor = db.cursor()
  443. sql = 'select distinct advertiser_vx.account_id,access_token from campaign_vx left join advertiser_vx on advertiser_vx.account_id = campaign_vx.account_id where created_time>=%s or last_modified_time>=%s'
  444. data = (int((time.time()+8*3600)//86400*86400-8*3600-86400),int((time.time()+8*3600)//86400*86400-8*3600-86400))
  445. try:
  446. cursor.execute(sql,data)
  447. db.commit()
  448. x=cursor.fetchall()
  449. # print('access get campaign update list',x)
  450. except:
  451. db.rollback()
  452. # print('defeat get campaign update list')
  453. a = []
  454. if len(x)>0:
  455. for t in x:
  456. a.append(t[0])
  457. sql2 = 'delete from adcreative where campaign_id=%s'
  458. try:
  459. cursor.executemany(sql2,a)
  460. db.commit()
  461. y=cursor.fetchall()
  462. # print('access delete adcreative',y)
  463. except:
  464. db.rollback()
  465. # print('defeat delete adcreative')
  466. return x
  467. def adcreative_vx_data(x,r):
  468. account_id = x[0]
  469. access_token = x[1]
  470. l = adcreatives_get(access_token, account_id, (
  471. 'campaign_id', 'adcreative_id', 'adcreative_name', 'adcreative_elements', 'promoted_object_type', 'page_type',
  472. 'page_spec', 'link_page_spec', 'universal_link_url', 'promoted_object_id'))
  473. if len(l) > 0:
  474. for ll in l:
  475. if 'image_list' in ll['adcreative_elements'].keys():
  476. for image_id in ll['adcreative_elements']['image_list']:
  477. a = {}
  478. a['campaign_id'] = ll['campaign_id']
  479. a['adcreative_id'] = ll['adcreative_id']
  480. a['adcreative_name'] = ll['adcreative_name']
  481. a['image_id'] = image_id
  482. a['title'] = ll['adcreative_elements']['title']
  483. a['promoted_object_type'] = ll['promoted_object_type']
  484. a['page_type'] = ll['page_type']
  485. if 'page_spec' in ll.keys():
  486. if 'page_id' in ll['page_spec'].keys():
  487. a['page_id'] = ll['page_spec']['page_id']
  488. else:
  489. a['page_id'] = None
  490. else:
  491. a['page_id'] = None
  492. if 'link_page_spec' in ll.keys():
  493. if 'page_id' in ll['link_page_spec'].keys():
  494. a['link_page_id'] = ll['link_page_spec']['page_id']
  495. else:
  496. a['link_page_id'] = None
  497. else:
  498. a['link_page_id'] = None
  499. a['promoted_object_id'] = ll['promoted_object_id']
  500. y = tuple(a.values())
  501. r = r + ((y),)
  502. elif 'image' in ll['adcreative_elements'].keys():
  503. a = {}
  504. a['campaign_id'] = ll['campaign_id']
  505. a['adcreative_id'] = ll['adcreative_id']
  506. a['adcreative_name'] = ll['adcreative_name']
  507. a['image_id'] = ll['adcreative_elements']['image']
  508. if 'title' in ll['adcreative_elements']:
  509. a['title'] = ll['adcreative_elements']['title']
  510. else:
  511. a['title'] = ''
  512. a['promoted_object_type'] = ll['promoted_object_type']
  513. a['page_type'] = ll['page_type']
  514. if 'page_spec' in ll.keys():
  515. if 'page_id' in ll['page_spec'].keys():
  516. a['page_id'] = ll['page_spec']['page_id']
  517. else:
  518. a['page_id'] = None
  519. else:
  520. a['page_id'] = None
  521. if 'link_page_spec' in ll.keys():
  522. if 'page_id' in ll['link_page_spec'].keys():
  523. a['link_page_id'] = ll['link_page_spec']['page_id']
  524. else:
  525. a['link_page_id'] = None
  526. else:
  527. a['link_page_id'] = None
  528. a['promoted_object_id'] = ll['promoted_object_id']
  529. y = tuple(a.values())
  530. r.append(y)
  531. def get_adcreative_vx():
  532. token_list_vx=get_campaign_update_list()
  533. r = []
  534. executor = ThreadPoolExecutor(max_workers=max_workers)
  535. for x in token_list_vx:
  536. executor.submit(adcreative_vx_data,x,r)
  537. executor.shutdown()
  538. mysql_insert_adcreative(r)
  539. def get_image_imformation():
  540. token_list_vx = tl.token_list_vx
  541. r = ()
  542. for x in token_list_vx:
  543. account_id = x[0]
  544. access_token = x[2]
  545. l = images_get(access_token,account_id,('image_id','preview_url'))
  546. if len(l)>0:
  547. for ll in l:
  548. ll['account_id']=account_id
  549. y=tuple(ll.values())
  550. r=r+((y),)
  551. mysql_insert_image(r)
  552. def start_all_job():
  553. start_time = date_util.get_n_day(n=-1,is_timestamp=1)
  554. end_time = date_util.get_n_day(n=-1,is_timestamp=1)
  555. print("run[{0}] data".format(date_util.stamp_to_str(start_time)[:10]))
  556. get_daily_vx_campaign(start_time,end_time)
  557. print("get_daily_vx success----------")
  558. get_adcreative_vx()
  559. print("get_adcreative success--------------")
  560. get_image_imformation()
  561. if __name__ == '__main__':
  562. print("============start at " + str(datetime.today()) + "===================")
  563. start_all_job()