get_campaign_daily.py 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689
  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. def adcreatives_get(access_token,account_id,fields) : #获取创意
  16. interface = 'adcreatives/get'
  17. url = 'https://api.e.qq.com/v1.1/' + interface
  18. page =1
  19. list1 = []
  20. common_parameters = {
  21. 'access_token': access_token,
  22. 'timestamp': int(time.time()),
  23. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  24. 'fields':fields
  25. }
  26. parameters = {
  27. "account_id": account_id,
  28. "page": page,
  29. "page_size": 100,
  30. "is_deleted": False
  31. }
  32. parameters.update(common_parameters)
  33. for k in parameters:
  34. if type(parameters[k]) is not str:
  35. parameters[k] = json.dumps(parameters[k])
  36. r = requests.get(url, params = parameters).json()
  37. if 'data' in r.keys():
  38. list1 = list1+r['data']['list']
  39. total_page=r['data']['page_info']['total_page']
  40. if total_page>1:
  41. for page in range(2,total_page+1):
  42. common_parameters = {
  43. 'access_token': access_token,
  44. 'timestamp': int(time.time()),
  45. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  46. 'fields':fields
  47. }
  48. parameters = {
  49. "account_id": account_id,
  50. "page": page,
  51. "page_size": 100,
  52. "is_deleted": False
  53. }
  54. parameters.update(common_parameters)
  55. for k in parameters:
  56. if type(parameters[k]) is not str:
  57. parameters[k] = json.dumps(parameters[k])
  58. r = requests.get(url, params = parameters).json()
  59. if 'data' in r.keys():
  60. list1 = list1+r['data']['list']
  61. return list1
  62. #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')))
  63. def ads_get(access_token,account_id,fields) : #获取广告
  64. interface = 'ads/get'
  65. url = 'https://api.e.qq.com/v1.1/' + interface
  66. common_parameters = {
  67. 'access_token': access_token,
  68. 'timestamp': int(time.time()),
  69. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  70. 'fields':fields
  71. }
  72. parameters = {
  73. "account_id": account_id,
  74. "page": 1,
  75. "page_size": 10,
  76. "is_deleted": False
  77. }
  78. parameters.update(common_parameters)
  79. for k in parameters:
  80. if type(parameters[k]) is not str:
  81. parameters[k] = json.dumps(parameters[k])
  82. r = requests.get(url, params = parameters)
  83. return r.json()
  84. #print(ads_get('2a674bef201314d338be30420369671f',14985162,('ad_id','ad_name','adcreative_id','adcreative')))
  85. def wechat_pages_get(access_token,account_id,page_id,fields) : #获取微信原生页
  86. interface = 'wechat_pages/get'
  87. url = 'https://api.e.qq.com/v1.1/' + interface
  88. common_parameters = {
  89. 'access_token': access_token,
  90. 'timestamp': int(time.time()),
  91. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  92. 'fields':fields
  93. }
  94. parameters = {
  95. "account_id": account_id,
  96. "filtering":
  97. [
  98. {
  99. "field": "page_id",
  100. "operator": "EQUALS",
  101. "values":
  102. [
  103. page_id
  104. ]
  105. }
  106. ],
  107. "page": 1,
  108. "page_size": 10
  109. }
  110. parameters.update(common_parameters)
  111. for k in parameters:
  112. if type(parameters[k]) is not str:
  113. parameters[k] = json.dumps(parameters[k])
  114. r = requests.get(url, params = parameters)
  115. return r.json()
  116. #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')))
  117. def adgroups_get(access_token,account_id,fields) : #获取广告组
  118. interface = 'adgroups/get'
  119. url = 'https://api.e.qq.com/v1.1/' + interface
  120. common_parameters = {
  121. 'access_token': access_token,
  122. 'timestamp': int(time.time()),
  123. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  124. 'fields':fields
  125. }
  126. parameters = {
  127. "account_id": account_id,
  128. "page": 4,
  129. "page_size": 100,
  130. "is_deleted": False
  131. }
  132. parameters.update(common_parameters)
  133. for k in parameters:
  134. if type(parameters[k]) is not str:
  135. parameters[k] = json.dumps(parameters[k])
  136. r = requests.get(url, params = parameters)
  137. return r.json()
  138. #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')))
  139. def images_get(access_token,account_id,fields) : #获取图片信息
  140. import json
  141. import random
  142. import requests
  143. import time
  144. interface = 'images/get'
  145. url = 'https://api.e.qq.com/v1.1/' + interface
  146. page = 1
  147. list1 = []
  148. common_parameters = {
  149. 'access_token': access_token,
  150. 'timestamp': int(time.time()),
  151. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  152. 'fields':fields
  153. }
  154. parameters = {
  155. "account_id": account_id,
  156. "page": page,
  157. "page_size": 100
  158. }
  159. parameters.update(common_parameters)
  160. for k in parameters:
  161. if type(parameters[k]) is not str:
  162. parameters[k] = json.dumps(parameters[k])
  163. r = requests.get(url, params = parameters).json()
  164. if 'data' in r.keys():
  165. list1 = list1+r['data']['list']
  166. total_page=r['data']['page_info']['total_page']
  167. if total_page>1:
  168. for page in range(2,total_page+1):
  169. common_parameters = {
  170. 'access_token': access_token,
  171. 'timestamp': int(time.time()),
  172. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  173. 'fields':fields
  174. }
  175. parameters = {
  176. "account_id": account_id,
  177. "page": page,
  178. "page_size": 100
  179. }
  180. parameters.update(common_parameters)
  181. for k in parameters:
  182. if type(parameters[k]) is not str:
  183. parameters[k] = json.dumps(parameters[k])
  184. r = requests.get(url, params = parameters).json()
  185. if 'data' in r.keys():
  186. list1 = list1+r['data']['list']
  187. return list1
  188. #print(images_get('2a674bef201314d338be30420369671f',14985162,('image_id','preview_url')))
  189. def campaigns_get(access_token,account_id,fields) : #获取推广计划
  190. import json
  191. import random
  192. import requests
  193. import time
  194. interface = 'campaigns/get'
  195. url = 'https://api.e.qq.com/v1.1/' + interface
  196. page = 1
  197. list1 = []
  198. common_parameters = {
  199. 'access_token': access_token,
  200. 'timestamp': int(time.time()),
  201. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  202. 'fields':fields
  203. }
  204. parameters = {
  205. "account_id": account_id,
  206. "page": page,
  207. "page_size": 100,
  208. "is_deleted": False
  209. }
  210. parameters.update(common_parameters)
  211. for k in parameters:
  212. if type(parameters[k]) is not str:
  213. parameters[k] = json.dumps(parameters[k])
  214. r = requests.get(url, params = parameters).json()
  215. if 'data' in r.keys():
  216. list1 = list1+r['data']['list']
  217. total_page=r['data']['page_info']['total_page']
  218. if total_page>1:
  219. for page in range(2,total_page+1):
  220. common_parameters = {
  221. 'access_token': access_token,
  222. 'timestamp': int(time.time()),
  223. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  224. 'fields':fields
  225. }
  226. parameters = {
  227. "account_id": account_id,
  228. "page": page,
  229. "page_size": 100,
  230. "is_deleted": False
  231. }
  232. parameters.update(common_parameters)
  233. for k in parameters:
  234. if type(parameters[k]) is not str:
  235. parameters[k] = json.dumps(parameters[k])
  236. r = requests.get(url, params = parameters).json()
  237. if 'data' in r.keys():
  238. list1 = list1+r['data']['list']
  239. return list1
  240. #aa=tl.token_list_vx[-2]
  241. #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')))
  242. def daily_reports_get(access_token,account_id,level,start_date,end_date,fields) : #获取wx投放计划日报数据
  243. interface = 'daily_reports/get'
  244. url = 'https://api.e.qq.com/v1.1/' + interface
  245. common_parameters = {
  246. 'access_token': access_token,
  247. 'timestamp': int(time.time()),
  248. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  249. 'fields':fields
  250. }
  251. parameters = {
  252. "account_id": account_id,
  253. "level": level,
  254. "date_range":
  255. {
  256. "start_date": start_date,
  257. "end_date": end_date
  258. },
  259. "page": 1,
  260. "page_size": 1000,
  261. "fields":
  262. [
  263. ]
  264. }
  265. parameters.update(common_parameters)
  266. for k in parameters:
  267. if type(parameters[k]) is not str:
  268. parameters[k] = json.dumps(parameters[k])
  269. r = requests.get(url, params = parameters)
  270. return r.json()
  271. def daily_qq_reports_get(access_token,account_id,compaign_id,level,start_date,end_date,fields) : #获取gdt投放计划日报数据
  272. interface = 'daily_reports/get'
  273. url = 'https://api.e.qq.com/v1.1/' + interface
  274. common_parameters = {
  275. 'access_token': access_token,
  276. 'timestamp': int(time.time()),
  277. 'nonce': str(time.time()) + str(random.randint(0, 999999)),
  278. 'fields':fields
  279. }
  280. parameters = {
  281. "account_id": account_id,
  282. "filtering":
  283. [
  284. {
  285. "field": "campaign_id",
  286. "operator": "EQUALS",
  287. "values":
  288. [
  289. compaign_id
  290. ]
  291. }
  292. ],
  293. "level": level,
  294. "date_range":
  295. {
  296. "start_date": start_date,
  297. "end_date": end_date
  298. },
  299. "page": 1,
  300. "page_size": 1000,
  301. "fields":
  302. [
  303. ]
  304. }
  305. parameters.update(common_parameters)
  306. for k in parameters:
  307. if type(parameters[k]) is not str:
  308. parameters[k] = json.dumps(parameters[k])
  309. r = requests.get(url, params = parameters)
  310. return r.json()
  311. def mysql_insert_daily_vx_campaign(data):
  312. db = pymysql.connect('rm-bp1c9cj79872tx3aaro.mysql.rds.aliyuncs.com','superc','Cc719199895','quchen_text')
  313. cursor = db.cursor()
  314. time1 = time.time()
  315. 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);'
  316. try:
  317. cursor.executemany(sql,data)
  318. db.commit()
  319. cost_time =round((time.time()-time1)/60,1)
  320. print('insert_daily_vx_campaign access',len(data),'cost_minutes:',cost_time)
  321. except:
  322. db.rollback()
  323. print('insert_daily_vx_campaign defeat')
  324. def mysql_insert_daily_qq_campaign(data):
  325. db = pymysql.connect('rm-bp1c9cj79872tx3aaro.mysql.rds.aliyuncs.com','superc','Cc719199895','quchen_text')
  326. cursor = db.cursor()
  327. time1 = time.time()
  328. 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)'
  329. try:
  330. cursor.executemany(sql,data)
  331. db.commit()
  332. cost_time =round((time.time()-time1)/60,1)
  333. print('insert_daily_qq_campaign access',len(data),'cost_minutes:',cost_time)
  334. except:
  335. db.rollback()
  336. print('insert_daily_qq_campaign defeat')
  337. #print(daily_reports_get('2a674bef201314d338be30420369671f',14985162,'REPORT_LEVEL_CAMPAIGN_WECHAT','2020-07-20','2020-07-20',('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')))
  338. #print(daily_reports_get('27b2f2768640555133162b5982872b83',15223385,'REPORT_LEVEL_CAMPAIGN','2020-07-10','2020-07-19',('account_id','date','campaign_id','view_count','thousand_display_price','valid_click_count','ctr','cpc','cost','order_roi')))
  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=30)
  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. #db = pymysql.connect('localhost','root','chencong1996','quchen_text')
  443. cursor = db.cursor()
  444. 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'
  445. data = (int((time.time()+8*3600)//86400*86400-8*3600-86400),int((time.time()+8*3600)//86400*86400-8*3600-86400))
  446. try:
  447. cursor.execute(sql,data)
  448. db.commit()
  449. x=cursor.fetchall()
  450. print('access get campaign update list',x)
  451. except:
  452. db.rollback()
  453. print('defeat get campaign update list')
  454. a = []
  455. if len(x)>0:
  456. for t in x:
  457. a.append(t[0])
  458. sql2 = 'delete from adcreative where campaign_id=%s'
  459. try:
  460. cursor.executemany(sql2,a)
  461. db.commit()
  462. y=cursor.fetchall()
  463. print('access delete adcreative',y)
  464. except:
  465. db.rollback()
  466. print('defeat delete adcreative')
  467. return x
  468. def adcreative_vx_data(x,r):
  469. account_id = x[0]
  470. access_token = x[1]
  471. l = adcreatives_get(access_token, account_id, (
  472. 'campaign_id', 'adcreative_id', 'adcreative_name', 'adcreative_elements', 'promoted_object_type', 'page_type',
  473. 'page_spec', 'link_page_spec', 'universal_link_url', 'promoted_object_id'))
  474. if len(l) > 0:
  475. for ll in l:
  476. if 'image_list' in ll['adcreative_elements'].keys():
  477. for image_id in ll['adcreative_elements']['image_list']:
  478. a = {}
  479. a['campaign_id'] = ll['campaign_id']
  480. a['adcreative_id'] = ll['adcreative_id']
  481. a['adcreative_name'] = ll['adcreative_name']
  482. a['image_id'] = image_id
  483. a['title'] = ll['adcreative_elements']['title']
  484. a['promoted_object_type'] = ll['promoted_object_type']
  485. a['page_type'] = ll['page_type']
  486. if 'page_spec' in ll.keys():
  487. if 'page_id' in ll['page_spec'].keys():
  488. a['page_id'] = ll['page_spec']['page_id']
  489. else:
  490. a['page_id'] = None
  491. else:
  492. a['page_id'] = None
  493. if 'link_page_spec' in ll.keys():
  494. if 'page_id' in ll['link_page_spec'].keys():
  495. a['link_page_id'] = ll['link_page_spec']['page_id']
  496. else:
  497. a['link_page_id'] = None
  498. else:
  499. a['link_page_id'] = None
  500. a['promoted_object_id'] = ll['promoted_object_id']
  501. y = tuple(a.values())
  502. r = r + ((y),)
  503. elif 'image' in ll['adcreative_elements'].keys():
  504. a = {}
  505. a['campaign_id'] = ll['campaign_id']
  506. a['adcreative_id'] = ll['adcreative_id']
  507. a['adcreative_name'] = ll['adcreative_name']
  508. a['image_id'] = ll['adcreative_elements']['image']
  509. if 'title' in ll['adcreative_elements']:
  510. a['title'] = ll['adcreative_elements']['title']
  511. else:
  512. a['title'] = ''
  513. a['promoted_object_type'] = ll['promoted_object_type']
  514. a['page_type'] = ll['page_type']
  515. if 'page_spec' in ll.keys():
  516. if 'page_id' in ll['page_spec'].keys():
  517. a['page_id'] = ll['page_spec']['page_id']
  518. else:
  519. a['page_id'] = None
  520. else:
  521. a['page_id'] = None
  522. if 'link_page_spec' in ll.keys():
  523. if 'page_id' in ll['link_page_spec'].keys():
  524. a['link_page_id'] = ll['link_page_spec']['page_id']
  525. else:
  526. a['link_page_id'] = None
  527. else:
  528. a['link_page_id'] = None
  529. a['promoted_object_id'] = ll['promoted_object_id']
  530. y = tuple(a.values())
  531. r.append(y)
  532. def get_adcreative_vx():
  533. token_list_vx=get_campaign_update_list()
  534. r = []
  535. executor = ThreadPoolExecutor(max_workers=30)
  536. for x in token_list_vx:
  537. executor.submit(adcreative_vx_data,x,r)
  538. executor.shutdown()
  539. mysql_insert_adcreative(r)
  540. def get_image_imformation():
  541. token_list_vx = tl.token_list_vx
  542. r = ()
  543. for x in token_list_vx:
  544. account_id = x[0]
  545. access_token = x[2]
  546. l = images_get(access_token,account_id,('image_id','preview_url'))
  547. if len(l)>0:
  548. for ll in l:
  549. ll['account_id']=account_id
  550. y=tuple(ll.values())
  551. r=r+((y),)
  552. mysql_insert_image(r)
  553. def start_all_job():
  554. start_time = int((time.time()+8*3600)//86400*86400-8*3600-86400)
  555. end_time = int((time.time()+8*3600)//86400*86400-8*3600-86400)
  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(datetime.today())
  563. start_all_job()