拉取易仓API的亚马逊Listing数据-listing表现接口
设计一个程序,按照api返回的json数据自动生成一张表,并且表的ID为xxxxxxxxxx,
提供一个通用的接口:save_date_to_table_id,这个接口应该是自动判断存在的列的并集,然后按照id做insert操作或者是update操作。
拉去亚马逊Listing表现数据接口代码如下:
import datetime
import json
import time
import requests
import op_data_web_hook as webhook
app_key = "xxxxx"
app_secret = "xxxxxx"
def get_ecc_listing_so(page, seed):
url = "http://home.eccang.com/openApi/api/unity"
star_time = datetime.datetime.now() + datetime.timedelta(days=-732 * seed)
end_time = datetime.datetime.now() + datetime.timedelta(days=-732 * (seed - 1))
data_dict = {
"page": page,
"page_size": 100,
'start_time': star_time.strftime('%Y-%m-%d %H:%M:%S'),
'end_time': end_time.strftime('%Y-%m-%d %H:%M:%S')
}
payload = str(json.dumps(data_dict))
params = {
"app_key": app_key,
"biz_content": payload,
"charset": 'UTF-8',
"interface_method": "ListingPerformance",
"nonce_str": webhook.get_uuid(),
"service_id": "ETTIS6",
"sign_type": "MD5",
"timestamp": int(time.time() * 1000),
"version": "V1.0.0"
}
md5key_list = []
for key, val in params.items():
md5key_list.append(str(key) + '=' + str(val))
md5key_str = str('&'.join(md5key_list)) + str(app_secret)
params["sign"] = webhook.get_md5(md5key_str)
ps = json.dumps(params)
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=ps)
res = response.text
res = res.replace("0000-00-00", "2000-01-01")
dict = json.loads(res)
dict = dict["biz_content"]
dict = json.loads(dict)
data = dict["data"]
if len(data) == 0:
return 0
for x in data:
print(x)
id = str(x["id"])
x["shop_order_amount"] = str(x["shop_order_amount"])
x["listing_shop_sale_account_total"] = str(x["listing_shop_sale_account_total"])
x["sub_depart_name"] = json.dumps(x["sub_depart_name"], ensure_ascii=False)
x["tags"] = json.dumps(x["tags"], ensure_ascii=False)
x["fulfillment_type"] = json.dumps(x["fulfillment_type"], ensure_ascii=False)
x["compare_data"] = json.dumps(x["compare_data"], ensure_ascii=False)
x["keywords"] = json.dumps(x["keywords"], ensure_ascii=False)
x["principal_names"] = json.dumps(["principal_names"], ensure_ascii=False)
if "bsr_category_ary" in x:
bsr_category_ary = x["bsr_category_ary"]
for bsr in bsr_category_ary:
bsr["id"] = webhook.get_md5(id + str(bsr["bsr_num"]))
bsr["pid"] = id
webhook.post_data_to_db(bsr_category_ary, "ddac0125a0184039b65824572bc3bc34")
del x["bsr_category_ary"]
if "product_sku_json" in x:
product_sku_json = x["product_sku_json"]
for p in product_sku_json:
p["id"] = webhook.get_md5(id + str(p["id"]))
p["pid"] = id
webhook.post_data_to_db(product_sku_json, "a67db211e9154a62b659073697517e52")
del x["product_sku_json"]
webhook.post_data_to_db(data, "438fd1d9258f4c12ad83998981811d80")
return 1
# https://open.eccang.com/#/documentCenter?docId=1297&catId=0-225-225,0-177%23%2FdocumentCenter%3FdocId%3D1297&catId=0-225-225,0-177
if __name__ == '__main__':
print("run at:" + webhook.time_to_str(datetime.datetime.now()))
x = 1
while True:
if x > 100:
break
print(x)
if get_ecc_listing_so(x, 1) == 0:
break
x = x + 1
print("run done at:" + webhook.time_to_str(datetime.datetime.now()))
done

浙公网安备 33010602011771号