首页 > 其他分享 >拉取易仓API的亚马逊Listing数据-listing表现接口

拉取易仓API的亚马逊Listing数据-listing表现接口

时间:2024-11-02 15:47:09浏览次数:4  
标签:易仓 bsr datetime json API str listing data id

设计一个程序,按照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 

 

标签:易仓,bsr,datetime,json,API,str,listing,data,id
From: https://www.cnblogs.com/IBPM/p/18522090

相关文章

  • 解释 RESTful API,以及如何使用它构建 web 应用程序。
    RESTfulAPI(RepresentationalStateTransfer)是一种设计风格,用于构建可扩展的网络服务。它基于HTTP协议,并使用标准的HTTP方法(例如GET、POST、PUT、DELETE)来实现对资源的创建、读取、更新和删除操作。RESTfulAPI的关键原则是将服务端的资源通过URL(统一资源定位符)暴露给......
  • 三周精通FastAPI:27 使用使用SQLModel操作SQL (关系型) 数据库
    官网文档:https://fastapi.tiangolo.com/zh/tutorial/sql-databases/SQL(关系型)数据库¶FastAPI不需要你使用SQL(关系型)数据库。但是您可以使用任何您想要的关系型数据库。这里我们将看到一个使用SQLModel的示例。SQLModel是在SQLAlchemy和Pydantic的基础上构建的。它......
  • 深入解析 FastAPI 查询参数:配置、类型转换与灵活组合
    深入解析FastAPI查询参数:配置、类型转换与灵活组合本文全面解析了FastAPI查询参数的使用方法,包括配置默认值、设为可选或必选参数、类型转换以及组合使用等实用技巧。通过查询参数,开发者可以在路径操作函数中接收动态输入,灵活地构建API接口。文章详细说明了如何利用......
  • 浏览器指纹修改指南2024 - 分析Geolocation API实现(十)
    在geolocation.h文件中,可以找到一个私有成员Member<GeoNotifierSet>one_shots_;Member<GeolocationWatchers>watchers_;//GeoNotifiersthatareinthemiddleofinvocation.////|HandleError(error)|and|MakeSuccessCallbacks|needtoclear|one_sho......
  • 浅析Dockerhub API:如何优雅地从dockerhub偷rootfs镜像
    成品:https://github.com/Moe-hacker/docker_image_puller前言:八月初的时候,咱无聊去扒了下dockerhub的接口,想通过网络请求直接从dockerhub偷镜像。然后写完才想起来dockkerhub在国内是被墙的,似乎这么一个功能用处也不大。。。。。然后咱就去旅游了,连项目Readme都没写(逃)。至于......
  • C# 通过注册表、API两种方式获取显示器的分辨率尺寸
    还是那个项目……还是那个领导……要求获取用户的显示器尺寸。一脸懵逼???还是照做……获取显示器的尺寸,有两种方法。第一种是通过查询注册表中,存储的指定显示器的相关信息;第二种是通过windowsAPI1、查询注册表中存储的显示器信息///<summary>///获取显示器的相关......
  • SpringBoot 快速实现 api 加密!so easy~
    SpringBoot快速实现api加密!soeasy~项目介绍什么是RSA加密举个栗子第一个场景第二个场景加密实战实战准备新建一个springboot项目引入maven依来启动类Application中添加@EnableSecurity注解在application.yml或者application.properties中添加RSA公钥及私钥对Control......
  • 咱就是说不想用swagger,替换swagger和postman的api接口神器 -- Apifox
    简介:        在当今快速发展的软件开发领域,寻找有效的API文档和测试工具对于提高开发效率和保证软件质量至关重要。        Swagger长久以来一直是开发者的首选,但新兴的工具Apifox逐渐显示出其独特的优势和潜力。本文将深入探讨如何使用Apifox来替换Swagger,......
  • Gemini API 和 Google AI Studio 升级,提升搜索准确性和响应能力
    从今天开始,使用Google的GeminiAPI和 GoogleAIStudio 构建AI服务和机器人开发者,将能够通过Google搜索的数据来增强其提示结果,这将使得基于更新数据的响应更加准确。开发者可以在AIStudio中免费尝试这一功能,AIStudio是Google为开发者提供的测试和优化提示......
  • Vue3 – Composition API
    OptionsAPI的弊端认识CompositionAPIsetup函数的参数setup函数的返回值ReactiveAPI定义响应式复杂数据RefAPI定义响应式数据Ref自动解包setup函数定义数据ref和reactive的使用场景认识readonlyreadonly的使用Reactive判断的APItoRefs结构内容变......