Просмотр исходного кода

amz_ad_client_modify
Data_ETL_modify

huangyifan 1 год назад
Родитель
Сommit
7d06611eec
2 измененных файлов с 42 добавлено и 6 удалено
  1. 1 0
      sync_amz_data/DataTransform/Data_ETL.py
  2. 41 6
      sync_amz_data/public/amz_ad_client.py

+ 1 - 0
sync_amz_data/DataTransform/Data_ETL.py

@@ -86,3 +86,4 @@ if __name__ == '__main__':
     }
     ac_etl = SP_ELT(**AWS_CREDENTIALS)
     print(ac_etl.budget_ETL(campaign_ids=["126327624499318"]))
+

+ 41 - 6
sync_amz_data/public/amz_ad_client.py

@@ -224,10 +224,44 @@ class SBClient(BaseClient):
             if not info.get("nextToken"):
                 break
             body["nextToken"] = info["nextToken"]
-        logger.info(f"总共数量:{info['totalResults']}")
+        # logger.info(f"总共数量:{info['totalResults']}")
 
-    def get_ad_groups(self):
-        pass
+    def get_ad_groups(self,**body):
+        url_path = "/sb/v4/adGroups/list"
+        headers = {
+            'Content-Type': "application/vnd.sbadgroupresource.v4+json",
+            'Accept': "application/vnd.sbadgroupresource.v4+json"
+        }
+        return self._request(url_path, method="POST", headers=headers,body=body)
+
+    def iter_adGroups(self, **body) -> Iterator[dict]:
+        if "maxResults" not in body:
+            body["maxResults"] = 100
+        while True:
+            info: dict = self.get_ad_groups(**body)
+            print(info)
+            yield from info["adGroups"]
+            if not info.get("nextToken"):
+                break
+            body["nextToken"] = info["nextToken"]
+
+    def get_ads(self,**body):
+        url_path = "/sb/v4/ads/list"
+        headers = {'Content-Type': "application/vnd.sbadresource.v4+json",
+                  'Accept': "application/vnd.sbadresource.v4+json"
+                  }
+        return self._request(url_path, method="POST", headers=headers,body=body)
+
+    def iter_ads(self,**body):
+        if "maxResults" not in body:
+            body["maxResults"] = 100
+        while True:
+            info: dict = self.get_ads(**body)
+            print(info)
+            yield from info["ads"]
+            if not info.get("nextToken"):
+                break
+            body["nextToken"] = info["nextToken"]
 
     def get_report(
             self,
@@ -311,9 +345,10 @@ if __name__ == '__main__':
         'lwa_client_secret': 'cbf0514186db4df91e04a8905f0a91b605eae4201254ced879d8bb90df4b474d',
         'profile_id': "3006125408623189"
     }
-    sp = SPClient(**AWS_CREDENTIALS)
-    print(sp.get_keyword_bidrecommendation(adGroupId="119753215871672",keyword=["8mp security camera system","8mp security camera system"],matchType=["broad","exact"]))
-
+    # sp = SPClient(**AWS_CREDENTIALS)
+    # print(sp.get_keyword_bidrecommendation(adGroupId="119753215871672",keyword=["8mp security camera system","8mp security camera system"],matchType=["broad","exact"]))
+    sb = SBClient(**AWS_CREDENTIALS)
+    print(list(sb.iter_ads()))
 
     # sd = SDClient(**AWS_CREDENTIALS)
     # print(sd.get_campaigns(startIndex=10, count=10))