pl_update.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. from sync_amz_data.DataTransform.Data_ETL import SP_ETL
  2. import requests
  3. from urllib.parse import urljoin
  4. from sync_amz_data.public.amz_ad_client import SPClient
  5. from sync_amz_data.settings import AWS_LWA_CLIENT
  6. import pandas as pd
  7. import json
  8. from sync_amz_data.tasks.datainsert.wg import LADS
  9. class RateLimitError(Exception):
  10. def __init__(self, retry_after: str = None):
  11. self.retry_after = retry_after
  12. def request(url_path: str, method: str = "GET", head: dict = None, params: dict = None, body: dict = None, AD = LADS):
  13. ADS = AD
  14. resp = requests.session().request(
  15. method=method,
  16. url=urljoin(ADS, url_path),
  17. headers=head,
  18. params=params,
  19. json=body,
  20. )
  21. if resp.status_code == 429:
  22. raise RateLimitError(resp.headers.get("Retry-After"))
  23. if resp.status_code >= 400:
  24. raise Exception(resp.text)
  25. return resp.json()
  26. class ProductLineDetail:
  27. def __init__(self, profile_id):
  28. self.profile_id = profile_id
  29. self.re_url_path = "api/ad_manage/profiles/"
  30. self.upcreate_url_path = "api/sellers/productlinedetail/update/pasin"
  31. self.heads = {'X-Token': "da4ab6bc5cbf1dfa"}
  32. self.refresh_token = self.get_refresh_token()
  33. self.lwa_client_id = AWS_LWA_CLIENT['lwa_client_id']
  34. self.lwa_client_secret = AWS_LWA_CLIENT['lwa_client_secret']
  35. self.AWS_CREDENTIALS = {
  36. 'lwa_client_id': self.lwa_client_id,
  37. 'lwa_client_secret': self.lwa_client_secret,
  38. 'refresh_token': self.refresh_token,
  39. 'profile_id': self.profile_id
  40. }
  41. def get_refresh_token(self):
  42. params = {'profile_id': self.profile_id}
  43. heads = self.heads
  44. url_path = self.re_url_path
  45. tem = request(url_path=url_path, head=heads, params=params)
  46. if tem.get('data') is not None:
  47. _ = tem.get('data')
  48. out = _[0].get('refresh_token')
  49. else:
  50. out = None
  51. return out
  52. def updata_create(self):
  53. heads = self.heads
  54. url_path = self.upcreate_url_path
  55. params = {'profileId': self.profile_id}
  56. tem = request(url_path=url_path, head=heads, method="GET", params=params)
  57. return tem
  58. if __name__ == '__main__':
  59. a = ProductLineDetail(profile_id="3006125408623189")
  60. # out = a.get_sptargets_data()
  61. out = a.updata_create()
  62. print(out)