start_sync_amz.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. import time
  2. from sync_amz_data.settings import LOG_CONF
  3. import logging.config
  4. logging.config.dictConfig(LOG_CONF)
  5. from sync_amz_data.public.amz_ad_client import shop_infos
  6. from sync_amz_data.DataTransform.Data_ETL import Common_ETLMethod,SP_ETL,SB_ETL,SD_ETL
  7. from apscheduler.schedulers.blocking import BlockingScheduler
  8. from datetime import datetime,timedelta
  9. def amz_report(AWS_CREDENTIALS,para=None):
  10. count = 1
  11. list_date = [((datetime.today()+timedelta(days=i)).date()).isoformat() for i in range(-2,-10,-1)]
  12. conn = SB_ETL(**AWS_CREDENTIALS).clickhouse_connect()
  13. # conn.command('')
  14. if para is not None:
  15. list_date = [para['startDate']]
  16. # print(list_date)
  17. for date_ in list_date:
  18. print(date_)
  19. print(date_.replace("-", ""))
  20. # amz_report(conn, AWS_CREDENTIALS, para={"startDate": date_, "endDate": date_, "date": date_.replace("-", "")})
  21. if count==1:
  22. delete_list = ['SB_adGroupsV2',
  23. 'SB_adGroupsVideoV2',
  24. 'SB_adsV2',
  25. 'SB_adsVideoV2',
  26. 'SB_campaignsPlacementV2',
  27. 'SB_campaignsPlacementVideoV2',
  28. 'SB_campaignsV2',
  29. 'SB_campaignsVideoV2',
  30. 'SB_keywordsQueryV2',
  31. 'SB_keywordsQueryVideoV2',
  32. 'SB_keywordsV2',
  33. 'SB_keywordsVideoV2',
  34. 'SB_sbAdGroup_adGroupV3',
  35. 'SB_sbAds_adsV3',
  36. 'SB_sbCampaigns_campaignV3',
  37. 'SB_sbCampaigns_placementV3',
  38. 'SB_sbPurchasedProduct_asinV3',
  39. 'SB_sbSearchTerm_searchTermV3',
  40. 'SB_sbTargeting_targetingV3',
  41. 'SB_targetsV2',
  42. 'SB_targetsVideoV2',
  43. 'SD_adGroupsMatchedTargetV2',
  44. 'SD_adGroupsV2',
  45. 'SD_adsV2',
  46. 'SD_advertiser_sdAdvertisedProductV3',
  47. 'SD_asin_sdPurchasedProductV3',
  48. 'SD_asinsV2',
  49. 'SD_campaignsMatchedTargetV2',
  50. 'SD_campaignsV2',
  51. 'SD_sdAdGroup_adGroupMatchedTargetV3',
  52. 'SD_sdAdGroup_adGroupV3',
  53. 'SD_sdCampaigns_campaignMatchedTargetV3',
  54. 'SD_sdCampaigns_campaignV3',
  55. 'SD_targeting_sdTargetingMatchedTargetV3',
  56. 'SD_targeting_sdTargetingV3',
  57. 'SD_targetsMatchedTargetV2',
  58. 'SD_targetsV2',
  59. 'SP_spAdvertisedProduct_advertiserV3',
  60. 'SP_spCampaigns_adGroupV3',
  61. 'SP_spCampaigns_campaignV3',
  62. 'SP_spCampaigns_placementV3',
  63. 'SP_spPurchasedProduct_asinV3',
  64. 'SP_spSearchTerm_searchTermV3',
  65. 'SP_spTargeting_targetingV3']
  66. for i in delete_list:
  67. conn.command(f"delete from AmazonReport.{i} where date='{list_date[-2]}'")
  68. count+=1
  69. try:
  70. refresh_token = shop_infos(AWS_CREDENTIALS['profile_id'])['refresh_token']
  71. AWS_CREDENTIALS['refresh_token'] = refresh_token
  72. except Exception as e:
  73. print(e)
  74. conn = SB_ETL(**AWS_CREDENTIALS).clickhouse_connect()
  75. sb_report = SB_ETL(**AWS_CREDENTIALS)
  76. sb_report.reportV3_campaign_sbCampaigns_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  77. sb_report.reportV3_adGroup_sbAdGroup_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  78. sb_report.reportV3_sbCampaignPlacement_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  79. sb_report.reportV3_sbTargeting_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  80. sb_report.reportV3_sbSearchTerm_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  81. sb_report.reportV3_sbAds_ETL(conn, params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  82. sb_report.reportV3_purchasedAsinRecord_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  83. sb_report.reportV3_purchasedAsinRecord_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  84. sb_report.reportV2_campaignsRecord_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  85. sb_report.reportV2_campaignsVideo_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  86. sb_report.reportV2_adGroupsRecord_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  87. sb_report.reportV2_adGroupsVideo_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  88. sb_report.reportV2_adsRecord_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  89. sb_report.reportV2_adsVideo_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  90. sb_report.reportV2_keywordsRecord_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  91. sb_report.reportV2_keywordsVideo_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  92. sb_report.reportV2_placementRecord_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  93. sb_report.reportV2_placementVideo_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  94. sb_report.reportV2_searchtermsRecord_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  95. sb_report.reportV2_searchtermsVideo_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  96. sb_report.reportV2_targetsRecord_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  97. sb_report.reportV2_targetsVideo_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  98. conn.close()
  99. time.sleep(5)
  100. conn = SP_ETL(**AWS_CREDENTIALS).clickhouse_connect()
  101. sp_report = SP_ETL(**AWS_CREDENTIALS)
  102. sp_report.reportV3_campaign_spCampaignsETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  103. sp_report.reportV3_adGroup_spCampaignsETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  104. sp_report.reportV3_campaignPlacement_spCampaignsETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  105. sp_report.reportV3_targeting_spTargetingETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  106. sp_report.reportV3_searchTerm_spSearchTermETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  107. sp_report.reportV3_advertiser_spAdvertisedProductETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  108. sp_report.reportV3_asin_spPurchasedProductETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  109. conn.close()
  110. time.sleep(5)
  111. conn = SD_ETL(**AWS_CREDENTIALS).clickhouse_connect()
  112. sd_report = SD_ETL(**AWS_CREDENTIALS)
  113. sd_report.reportV3_campaign_sdCampaigns_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  114. sd_report.reportV3_campaignMT_sdCampaigns_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  115. sd_report.reportV3_adgroup_sdAdGroup_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  116. sd_report.reportV3_adgroupMT_sdAdGroup_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  117. sd_report.reportV3_targeting_sdTargeting_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  118. sd_report.reportV3_targetingMT_sdTargeting_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  119. sd_report.reportV3_asin_sdPurchasedProduct_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  120. sd_report.reportV3_advertiser_sdAdvertisedProduct_ETL(conn,params={"startDate":date_,"endDate":date_,"date":date_.replace("-","")})
  121. # sd_report.reportV2_campaignsRecord_t2_ETL(conn,params=para)
  122. # sd_report.reportV2_campaignsRecord_t3_ETL(conn,params=para)
  123. # sd_report.reportV2_adGroupsRecord_t2_ETL(conn,params=para)
  124. # sd_report.reportV2_adGroupsRecord_t3_ETL(conn,params=para)
  125. # sd_report.reportV2_asins_t2_ETL(conn,params=para)
  126. # sd_report.reportV2_asins_t3_ETL(conn,params=para)
  127. # sd_report.reportV2_productAds_t2_ETL(conn,params=para)
  128. # sd_report.reportV2_productAds_t3_ETL(conn,params=para)
  129. # sd_report.reportV2_targets_t2_ETL(conn,params=para)
  130. # sd_report.reportV2_targets_t3_ETL(conn,params=para)
  131. # sd_report.reportV2_campaign_matchedTarget_t2_ETL(conn,params=para)
  132. # sd_report.reportV2_campaign_matchedTarget_t3_ETL(conn,params=para)
  133. # sd_report.reportV2_adGroups_matchedTarget_t2_ETL(conn,params=para)
  134. # sd_report.reportV2_adGroups_matchedTarget_t3_ETL(conn,params=para)
  135. # sd_report.reportV2_targets_matchedTarget_t2_ETL(conn,params=para)
  136. # sd_report.reportV2_targets_matchedTarget_t3_ETL(conn,params=para)
  137. conn.close()
  138. time.sleep(5)
  139. if __name__ == '__main__':
  140. # AccountTask("3006125408623189").do({"record": "portfolios"})
  141. AWS_CREDENTIALS = {
  142. 'lwa_client_id': 'amzn1.application-oa2-client.ebd701cd07854fb38c37ee49ec4ba109',
  143. 'refresh_token': "Atzr|IwEBIL4ur8kbcwRyxVu_srprAAoTYzujnBvA6jU-0SMxkRgOhGjYJSUNGKvw24EQwJa1jG5RM76mQD2P22AKSq8qSD94LddoXGdKDO74eQVYl0RhuqOMFqdrEZpp1p4bIR6_N8VeSJDHr7UCuo8FiabkSHrkq7tsNvRP-yI-bnpQv4EayPBh7YwHVX3hYdRbhxaBvgJENgCuiEPb35Q2-Z6w6ujjiKUAK2VSbCFpENlEfcHNsjDeY7RCvFlwlCoHj1IeiNIaFTE9yXFu3aEWlExe3LzHv6PZyunEi88QJSXKSh56Um0e0eEg05rMv-VBM83cAqc5POmZnTP1vUdZO8fQv3NFLZ-xU6e1WQVxVPi5Cyqk4jYhGf1Y9t98N654y0tVvw74qNIsTrB-8bGS0Uhfe24oBEWmzObvBY3zhtT1d42myGUJv4pMTU6yPoS83zhPKm3LbUDEpBA1hvvc_09jHk7vUEAuFB-UAZzlht2C1yklzQ",
  144. 'lwa_client_secret': 'cbf0514186db4df91e04a8905f0a91b605eae4201254ced879d8bb90df4b474d',
  145. 'profile_id': "3006125408623189"
  146. }
  147. try:
  148. refresh_token = shop_infos(AWS_CREDENTIALS['profile_id'])['refresh_token']
  149. AWS_CREDENTIALS['refresh_token'] = refresh_token
  150. except Exception as e:
  151. print(e)
  152. timezone_ = Common_ETLMethod(**AWS_CREDENTIALS).timeZone()
  153. print(timezone_)
  154. # amz_report(AWS_CREDENTIALS)
  155. sched = BlockingScheduler()
  156. sched.add_job(amz_report,'cron',hour=17,minute=0,second=0,timezone=timezone_, args=(AWS_CREDENTIALS, ))#,params={"startDate":"2023-11-04","endDate":"2023-11-04","date":"20231104"}
  157. sched.start()