From 15c616c4e79976a0687a0a6060ec7e9b05ff0dc2 Mon Sep 17 00:00:00 2001 From: dtk Date: Mon, 19 Jul 2021 15:43:04 +0800 Subject: [PATCH] dataoke opensdk for python --- README.md | 105 ++++++++++++++---- dtkApi/__init__.py | 1 + dtkApi/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 154 bytes dtkApi/apiRequest/Request.py | 94 ++++++++++++++++ dtkApi/apiRequest/__init__.py | 1 + .../__pycache__/Request.cpython-36.pyc | Bin 0 -> 2715 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 199 bytes dtkApi/basic/ActivityLinkReq.py | 18 +++ dtkApi/basic/CollectionListReq.py | 24 ++++ dtkApi/basic/CreatTaokoulingReq.py | 19 ++++ dtkApi/basic/FirstOrderGiftMoneyReq.py | 23 ++++ dtkApi/basic/JdGoodsLinkReq.py | 24 ++++ dtkApi/basic/OrderDetailsReq.py | 28 +++++ dtkApi/basic/ParseContentReq.py | 17 +++ dtkApi/basic/ParseTaokoulingReq.py | 17 +++ dtkApi/basic/PrivilegeLinkReq.py | 27 +++++ dtkApi/basic/SuperCategoryReq.py | 17 +++ dtkApi/basic/TwdToTwdReq.py | 21 ++++ dtkApi/basic/__init__.py | 27 +++++ .../ActivityLinkReq.cpython-36.pyc | Bin 0 -> 1329 bytes .../CollectionListReq.cpython-36.pyc | Bin 0 -> 2137 bytes .../CreatTaokoulingReq.cpython-36.pyc | Bin 0 -> 1129 bytes .../FirstOrderGiftMoneyReq.cpython-36.pyc | Bin 0 -> 1677 bytes .../__pycache__/JdGoodsLinkReq.cpython-36.pyc | Bin 0 -> 666 bytes .../OrderDetailsReq.cpython-36.pyc | Bin 0 -> 2118 bytes .../ParseContentReq.cpython-36.pyc | Bin 0 -> 951 bytes .../ParseTaokoulingReq.cpython-36.pyc | Bin 0 -> 854 bytes .../PrivilegeLinkReq.cpython-36.pyc | Bin 0 -> 1864 bytes .../SuperCategoryReq.cpython-36.pyc | Bin 0 -> 674 bytes .../__pycache__/TwdToTwdReq.cpython-36.pyc | Bin 0 -> 1239 bytes .../basic/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 1311 bytes dtkApi/original/ActivityCatalogueReq.py | 16 +++ dtkApi/original/ActivityGoodsListReq.py | 23 ++++ dtkApi/original/BrandListReq.py | 18 +++ dtkApi/original/CatalogueReq.py | 16 +++ dtkApi/original/DdqGoodsListReq.py | 17 +++ dtkApi/original/ExclusiveGoodsListReq.py | 20 ++++ dtkApi/original/ExplosiveGoodsListReq.py | 19 ++++ dtkApi/original/FriendsCircleListReq.py | 25 +++++ dtkApi/original/GoodspriceTrendReq.py | 17 +++ dtkApi/original/ListSimilerGoodsByOpenReq.py | 18 +++ dtkApi/original/LiveMaterialGoodsListReq.py | 18 +++ dtkApi/original/OpGoodsListReq.py | 20 ++++ dtkApi/original/RankingListReq.py | 21 ++++ dtkApi/original/TbTopicListReq.py | 19 ++++ dtkApi/original/TopicGoodsListReq.py | 19 ++++ dtkApi/original/__init__.py | 35 ++++++ dtkApi/save/GoodsByTimeReq.py | 26 +++++ dtkApi/save/GoodsDetailsReq.py | 18 +++ dtkApi/save/GoodsListReq.py | 41 +++++++ dtkApi/save/JdGoodsDetaillReq.py | 17 +++ dtkApi/save/NewestGoodsReq.py | 38 +++++++ dtkApi/save/StaleGoodsByTimeReq.py | 19 ++++ dtkApi/save/__init__.py | 17 +++ .../__pycache__/GoodsByTimeReq.cpython-36.pyc | Bin 0 -> 2459 bytes .../GoodsDetailsReq.cpython-36.pyc | Bin 0 -> 925 bytes .../__pycache__/GoodsListReq.cpython-36.pyc | Bin 0 -> 3724 bytes .../JdGoodsDetaillReq.cpython-36.pyc | Bin 0 -> 827 bytes .../__pycache__/NewestGoodsReq.cpython-36.pyc | Bin 0 -> 3555 bytes .../StaleGoodsByTimeReq.cpython-36.pyc | Bin 0 -> 1789 bytes .../save/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 742 bytes dtkApi/search/DtkSearchGoodsReq.py | 36 ++++++ dtkApi/search/JdGoodsReq.py | 42 +++++++ dtkApi/search/ListHotWordsReq.py | 16 +++ dtkApi/search/PddGoodsReq.py | 32 ++++++ dtkApi/search/SuggestionReq.py | 19 ++++ dtkApi/search/SuperGoodsReq.py | 31 ++++++ dtkApi/search/TbServiceReq.py | 32 ++++++ dtkApi/search/Top100Req.py | 17 +++ dtkApi/search/__init__.py | 20 ++++ .../DtkSearchGoodsReq.cpython-36.pyc | Bin 0 -> 3620 bytes .../__pycache__/JdGoodsReq.cpython-36.pyc | Bin 0 -> 2375 bytes .../ListHotWordsReq.cpython-36.pyc | Bin 0 -> 666 bytes .../__pycache__/PddGoodsReq.cpython-36.pyc | Bin 0 -> 2453 bytes .../__pycache__/SuggestionReq.cpython-36.pyc | Bin 0 -> 813 bytes .../__pycache__/SuperGoodsReq.cpython-36.pyc | Bin 0 -> 2279 bytes .../__pycache__/TbServiceReq.cpython-36.pyc | Bin 0 -> 2765 bytes .../__pycache__/Top100Req.cpython-36.pyc | Bin 0 -> 724 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 895 bytes setup.py | 11 ++ 80 files changed, 1194 insertions(+), 22 deletions(-) create mode 100644 dtkApi/__init__.py create mode 100644 dtkApi/__pycache__/__init__.cpython-36.pyc create mode 100644 dtkApi/apiRequest/Request.py create mode 100644 dtkApi/apiRequest/__init__.py create mode 100644 dtkApi/apiRequest/__pycache__/Request.cpython-36.pyc create mode 100644 dtkApi/apiRequest/__pycache__/__init__.cpython-36.pyc create mode 100644 dtkApi/basic/ActivityLinkReq.py create mode 100644 dtkApi/basic/CollectionListReq.py create mode 100644 dtkApi/basic/CreatTaokoulingReq.py create mode 100644 dtkApi/basic/FirstOrderGiftMoneyReq.py create mode 100644 dtkApi/basic/JdGoodsLinkReq.py create mode 100644 dtkApi/basic/OrderDetailsReq.py create mode 100644 dtkApi/basic/ParseContentReq.py create mode 100644 dtkApi/basic/ParseTaokoulingReq.py create mode 100644 dtkApi/basic/PrivilegeLinkReq.py create mode 100644 dtkApi/basic/SuperCategoryReq.py create mode 100644 dtkApi/basic/TwdToTwdReq.py create mode 100644 dtkApi/basic/__init__.py create mode 100644 dtkApi/basic/__pycache__/ActivityLinkReq.cpython-36.pyc create mode 100644 dtkApi/basic/__pycache__/CollectionListReq.cpython-36.pyc create mode 100644 dtkApi/basic/__pycache__/CreatTaokoulingReq.cpython-36.pyc create mode 100644 dtkApi/basic/__pycache__/FirstOrderGiftMoneyReq.cpython-36.pyc create mode 100644 dtkApi/basic/__pycache__/JdGoodsLinkReq.cpython-36.pyc create mode 100644 dtkApi/basic/__pycache__/OrderDetailsReq.cpython-36.pyc create mode 100644 dtkApi/basic/__pycache__/ParseContentReq.cpython-36.pyc create mode 100644 dtkApi/basic/__pycache__/ParseTaokoulingReq.cpython-36.pyc create mode 100644 dtkApi/basic/__pycache__/PrivilegeLinkReq.cpython-36.pyc create mode 100644 dtkApi/basic/__pycache__/SuperCategoryReq.cpython-36.pyc create mode 100644 dtkApi/basic/__pycache__/TwdToTwdReq.cpython-36.pyc create mode 100644 dtkApi/basic/__pycache__/__init__.cpython-36.pyc create mode 100644 dtkApi/original/ActivityCatalogueReq.py create mode 100644 dtkApi/original/ActivityGoodsListReq.py create mode 100644 dtkApi/original/BrandListReq.py create mode 100644 dtkApi/original/CatalogueReq.py create mode 100644 dtkApi/original/DdqGoodsListReq.py create mode 100644 dtkApi/original/ExclusiveGoodsListReq.py create mode 100644 dtkApi/original/ExplosiveGoodsListReq.py create mode 100644 dtkApi/original/FriendsCircleListReq.py create mode 100644 dtkApi/original/GoodspriceTrendReq.py create mode 100644 dtkApi/original/ListSimilerGoodsByOpenReq.py create mode 100644 dtkApi/original/LiveMaterialGoodsListReq.py create mode 100644 dtkApi/original/OpGoodsListReq.py create mode 100644 dtkApi/original/RankingListReq.py create mode 100644 dtkApi/original/TbTopicListReq.py create mode 100644 dtkApi/original/TopicGoodsListReq.py create mode 100644 dtkApi/original/__init__.py create mode 100644 dtkApi/save/GoodsByTimeReq.py create mode 100644 dtkApi/save/GoodsDetailsReq.py create mode 100644 dtkApi/save/GoodsListReq.py create mode 100644 dtkApi/save/JdGoodsDetaillReq.py create mode 100644 dtkApi/save/NewestGoodsReq.py create mode 100644 dtkApi/save/StaleGoodsByTimeReq.py create mode 100644 dtkApi/save/__init__.py create mode 100644 dtkApi/save/__pycache__/GoodsByTimeReq.cpython-36.pyc create mode 100644 dtkApi/save/__pycache__/GoodsDetailsReq.cpython-36.pyc create mode 100644 dtkApi/save/__pycache__/GoodsListReq.cpython-36.pyc create mode 100644 dtkApi/save/__pycache__/JdGoodsDetaillReq.cpython-36.pyc create mode 100644 dtkApi/save/__pycache__/NewestGoodsReq.cpython-36.pyc create mode 100644 dtkApi/save/__pycache__/StaleGoodsByTimeReq.cpython-36.pyc create mode 100644 dtkApi/save/__pycache__/__init__.cpython-36.pyc create mode 100644 dtkApi/search/DtkSearchGoodsReq.py create mode 100644 dtkApi/search/JdGoodsReq.py create mode 100644 dtkApi/search/ListHotWordsReq.py create mode 100644 dtkApi/search/PddGoodsReq.py create mode 100644 dtkApi/search/SuggestionReq.py create mode 100644 dtkApi/search/SuperGoodsReq.py create mode 100644 dtkApi/search/TbServiceReq.py create mode 100644 dtkApi/search/Top100Req.py create mode 100644 dtkApi/search/__init__.py create mode 100644 dtkApi/search/__pycache__/DtkSearchGoodsReq.cpython-36.pyc create mode 100644 dtkApi/search/__pycache__/JdGoodsReq.cpython-36.pyc create mode 100644 dtkApi/search/__pycache__/ListHotWordsReq.cpython-36.pyc create mode 100644 dtkApi/search/__pycache__/PddGoodsReq.cpython-36.pyc create mode 100644 dtkApi/search/__pycache__/SuggestionReq.cpython-36.pyc create mode 100644 dtkApi/search/__pycache__/SuperGoodsReq.cpython-36.pyc create mode 100644 dtkApi/search/__pycache__/TbServiceReq.cpython-36.pyc create mode 100644 dtkApi/search/__pycache__/Top100Req.cpython-36.pyc create mode 100644 dtkApi/search/__pycache__/__init__.cpython-36.pyc create mode 100644 setup.py diff --git a/README.md b/README.md index 80c0faf..e1cb16f 100644 --- a/README.md +++ b/README.md @@ -3,35 +3,96 @@ #### 介绍 大淘客开放平台SDK PYTHON版 -#### 软件架构 -软件架构说明 - - #### 安装教程 -1. xxxx -2. xxxx -3. xxxx +1. 依赖包安装 + pip install requests +2. 安装 + + 1)下载安装包 + + git clone https://gitee.com/dtk-developer/openapi-sdk-python.git + 或者下载压缩包 + + 2)安装 + python setup.py install + #### 使用说明 +**** +`热搜记录` + +from dtkApi.search import Top100Req + +appKey = 'xxx' + +appSecret = 'xxx' + +version = 'v1.0.1' # 当前版本号 + +gr=Top100Req(appKey,appSecret,version) + +gr.setParams("type",1) + +gr.setParams("keyWords","男装") + +data=gr.getResponse() + +print(data) + +**** +`商品列表` + +from dtkApi.save import GoodsListReq + +appKey = 'xxx' + +appSecret = 'xxx' + +version = 'v1.2.4' # 当前版本号 + +gr=GoodsListReq(appKey,appSecret,version) + +gr.setParams("pageId",1) + +data=gr.getResponse() + +print(data) + +**** +`各大榜单` + +from dtkApi.original import RankingListReq + +appKey = 'xxx' + +appSecret = 'xxx' + +version = 'v1.3.0' # 当前版本号 + +gr=RankingListReq(appKey,appSecret,version) + +gr.setParams("rankType",1) + +data=gr.getResponse() + +print(data) + +**** +`高效转链` + +from dtkApi.basic import PrivilegeLinkReq + +appKey = 'xxx' -1. xxxx -2. xxxx -3. xxxx +appSecret = 'xxx' -#### 参与贡献 +version = 'v1.3.1' # 当前版本号 -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request +gr=PrivilegeLinkReq(appKey,appSecret,version) +gr.setParams("goodsId","2222112") -#### 特技 +data=gr.getResponse() -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 -5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) +print(data) diff --git a/dtkApi/__init__.py b/dtkApi/__init__.py new file mode 100644 index 0000000..7cca03f --- /dev/null +++ b/dtkApi/__init__.py @@ -0,0 +1 @@ +from dtkApi import * \ No newline at end of file diff --git a/dtkApi/__pycache__/__init__.cpython-36.pyc b/dtkApi/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..027ffcc4bfc6fc0a52f08ccebeb6f926f3f668a5 GIT binary patch literal 154 zcmXr!<>k7)^HG8*0|UcjAcg}bAj<)Wi+O-V3PTEG4nqh-3R5tHCi6?62!kf$Ek-Rr zO~xp;l#*=6g3Of+Ma)29F!9U4)hec-GC3o$C^sg*AT=+sAXB$EC0n0: + for key in check_params: + if key in arg.keys(): + params.remove(key) + # print(self.__class__.check_parmas,list(arg.keys())) + # print(i) + if len(params)==0: + return True + else: + print("请传入必要参数%s"%str(params)) + return False + else: + return True + else: + if len(check_params)>0: + print("请传入必要参数%s"%str(check_params)) + return False + else: + return True + #设置传入参数 + def setParams(self,key,value): + self.params[key]=value + def request(self,method,api_url,args,UserAgent=None,ContentType=None): + url="https://openapi.dataoke.com/api/"+api_url + if UserAgent == None: + headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36", + 'Content-Type':ContentType} + else: + headers = {"User-Agent": UserAgent,'Content-Type': ContentType} + # 将appkey 加入 待排序 + args['appKey']=self.appKey + #将apiVersion 加入 + args['version']=self.apiVersion + #生成签名 + data = self.md5_sign(args=args) + # print(data) + method_tmp = method.lower() + if method_tmp == 'get': + response = requests.request(method=method_tmp,url=url,params=data,headers=headers,verify=False).json() + return response + elif method_tmp == 'post': + response = requests.request(method=method_tmp,url=url,data=data,headers=headers,verify=False).json() + return response + + + diff --git a/dtkApi/apiRequest/__init__.py b/dtkApi/apiRequest/__init__.py new file mode 100644 index 0000000..6653fce --- /dev/null +++ b/dtkApi/apiRequest/__init__.py @@ -0,0 +1 @@ +from dtkApi.apiRequest.Request import Request diff --git a/dtkApi/apiRequest/__pycache__/Request.cpython-36.pyc b/dtkApi/apiRequest/__pycache__/Request.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..553e3e355d5174158179649fcaf91916f8e83138 GIT binary patch literal 2715 zcmZuz-)|g89pBmCw>~>ADlw@lI8YkpDtvaa9ilX#MxhN-=m}wiVP$k|ZpP<5-|env z_tN;fC$(H6K}FIE3J+BzKv7XZ0rCbyk@!FM5qeJg)b~E|`Oe-YQN*m~JKvf4&U}A= zXV>QEy^Z`oKigfPwF>ap(9?GSxW-ve^UIO>OwDy)SEJz@YBYUQm|ctOW5%?@ zs#>#sds~YdOruXY+@L*SbX{&L%;6S|GuoeMk^W=tlE!WBT-UfW*8K`+n_Aud6jEr- zt-%I{$^DOxZvSQSw_iTGb3=-Qfk?A-@~_`~_TX1Xf4wugeYf1f^wHn{@$l}=$p^PS zd+_e?`6NtgVU%V;uUDHL8+-%z%_g{`JbLtt4<_&Z9)}*@yZ6aI-#NPX$4B?a4?nzn zbnD~E`**P3CTV8P0P-4oN3k_wX8NDJW4nshOIe(v>iJIP^tFOdD6 zI1v#pSWfx=a&nmM#nBGW_Aeyi4pyfE?@Y%=a#*;nRv3j@tMwdiO6fX{+3FiE&d6pY zZBmXJNkF0~MNa|Av@RQKBRywbWzm~#WaN6+$WHN?TEr2Bs|E3U)dAac-TSo)J^GtTVVvUBju$_Jx z0A_}fDFLc%!KgA*Uu3p!>s7W0eE5Y~Qam~O*z9C}>dNeRfK*BAqP(3iRYoaeN|?G) z%1Sa7*43al5YLKMNk#U3Rn=YxQL0J`8$LJV{&=@d%2As`r`%M`KLWy8t}juZm|TPB zUgUZXzuneHPK3Og;m9g2M^Q%}Q63xIQW!kWZImasjEPYtuW$#qNXqTJg4}a+hf4oV zt7{`0z1-W>K;wbtchAtwJx!y0Uu_O+ds&vG=T=sxmAHW#7R39a(T@8osKF~k`DQ!} zd%a*~qp?~$y&Xn8ek-jtw`#AfHdbG)Vd2dBtF>!q*6XzkNzxPB;>zVPTiICqW@GJ4 z?eyjEZoT=vuh)9vzNlS7FvRuR#XTAK#mbqpjn&55`ub|)?0Ri8*bQVjJyq9--VakD zmoIcglntvF<0u2Nymg42CeIem)$+-KBfmm(1I6JDlxDjx@QCoj7|5P-F^aVaIEV`y zN5b7h-%MhZW=k&PoTP9oOww7d(0mmD!A?BXnA_O!%hQCtOn^jqN-QOyl8y4>7e~6aW6rSfq~&M5W@izkmUfx#R5Pgg&~D8has0Sijk2ag(;Xplldi3ltGj6 z7JE=?VQFe{iJvCZEylIYq;;_lhPbtkwwPOUDR}91q E0AtWLYybcN literal 0 HcmV?d00001 diff --git a/dtkApi/basic/ActivityLinkReq.py b/dtkApi/basic/ActivityLinkReq.py new file mode 100644 index 0000000..6585dfc --- /dev/null +++ b/dtkApi/basic/ActivityLinkReq.py @@ -0,0 +1,18 @@ +# -*- coding:utf8-*- + +"""官方活动会场转链 +@promotionSceneId:string 必须 联盟官方活动ID,从联盟官方活动页获取(或从大淘客官方活动推广接口获取(饿了么微信推广活动ID:20150318020002192,饿了么外卖活动ID:20150318019998877,饿了么商超活动ID:1585018034441) +@pid string 非必须 推广pid,默认为在”我的应用“添加的pid +@relationId string 非必须 渠道id将会和传入的pid进行验证,验证通过将正常转链,请确认填入的渠道id是正确的 +@unionId string 非必须 自定义输入串,英文和数字组成,长度不能大于12个字符,区分不同的推广渠道 +""" +from dtkApi.apiRequest import Request + + +class ActivityLinkReq(Request): + url='/tb-service/activity-link' + check_params=['promotionSceneId'] + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) \ No newline at end of file diff --git a/dtkApi/basic/CollectionListReq.py b/dtkApi/basic/CollectionListReq.py new file mode 100644 index 0000000..1e0870a --- /dev/null +++ b/dtkApi/basic/CollectionListReq.py @@ -0,0 +1,24 @@ +# -*- coding:utf8-*- + +"""我的收藏 +@pageId string 必须 默认为1,支持传统的页码分页方式和scroll_id分页方式,根据用户自身需求传入值。示例1:商品入库,则首次传入1,后续传入接口返回的pageid +,接口将持续返回符合条件的完整商品列表,该方式可以避免入口商品重复;示例2:根据pagesize和totalNum计算出总页数,按照需求返回指定页的商品(该方式可能在临近页取到重复商品) +@pageSize Number 非必须 每页条数,默认为100,最大值200,若小于10,则按10条处理,每页条数仅支持输入10,50,100,200 +@cid string 必须 商品在大淘客的一级分类id,如果需要传多个,以英文逗号相隔,如:”1,2,3”。当一级类目id和二级类目id同时传入时,会自动忽略二级类目id,1 -女装,2 -母婴,3 -美妆,4 -居家日用,5 -鞋品, +6 -美食,7 -文娱车品,8 -数码家电,9 -男装,10 -内衣,11 -箱包,12 -配饰,13 -户外运动,14 -家装家纺 +@trailerType number 非必须 是否返回预告商品,1为预告商品,0为在线商品,不填则全部商品 +@sort string 非必须 排序字段,默认为0,0-综合排序,1-商品上架时间从高到低,2-销量从高到低,3-领券量从高到低,4-佣金比例从高到低,5-价格(券后价)从高到低,6-价格(券后价)从低到高 +@collectionTimeOrder number 非必须 加入收藏时间 + """ + +from dtkApi.apiRequest import Request + + +class CollectionListReq(Request): + url = 'goods/get-collection-list' + check_params = ['pageId', 'cid'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/basic/CreatTaokoulingReq.py b/dtkApi/basic/CreatTaokoulingReq.py new file mode 100644 index 0000000..1e3ce81 --- /dev/null +++ b/dtkApi/basic/CreatTaokoulingReq.py @@ -0,0 +1,19 @@ + +# -*- coding:utf8-*- +""" +淘口令生成 +text string 必须 口令弹框内容,长度大于5个字符 +url string 必须 口令跳转目标页,如:https://uland.taobao.com/,必须以https开头,可以是二合一链接、长链接、短链接等各种淘宝高佣链接;支持渠道备案链接。* 该参数需要进行Urlencode编码后传入* +logo string 非必须 口令弹框logoURL +userId string 非必须 生成口令的淘宝用户ID,非必传参数 +""" +from dtkApi.apiRequest import Request + +class CreatTaokoulingReq(Request): + url='tb-service/creat-taokouling' + check_params=['text','url'] + #GET请求 + def getResponse(self): + if self.check_args(self.params,self.check_params): + return self.request('GET',api_url=self.url,args=self.params) + \ No newline at end of file diff --git a/dtkApi/basic/FirstOrderGiftMoneyReq.py b/dtkApi/basic/FirstOrderGiftMoneyReq.py new file mode 100644 index 0000000..28f1d73 --- /dev/null +++ b/dtkApi/basic/FirstOrderGiftMoneyReq.py @@ -0,0 +1,23 @@ +# -*- coding:utf8-*- + +""" +首单礼金商品 +@pageSize Number 必须 每页返回条数,每页条数支持输入10,20,50,100,200 +@pageId String 必须 分页id:常规分页方式,请直接传入对应页码(比如:1,2,3……) +@cids String 非必须 大淘客的一级分类id,如果需要传多个,以英文逗号相隔,如:”1,2,3”。1 -女装,2 -母婴,3 -美妆,4 -居家日用,5 -鞋品,6 -美食,7 -文娱车品,8 -数码家电,9 -男装,10 -内衣,11 -箱包,12 -配饰,13 -户外运动,14 -家装家纺 +@sort String 非必须 排序方式,默认为0,0-综合排序,1-商品上架时间从高到低,2-销量从高到低,3-领券量从高到低,4-佣金比例从高到低,5-价格(券后价)从高到低,6-价格(券后价)从低到高 +@keyWord String 非必须 输入关键词搜索(新增字段) +@goodsType Number 非必须 商品类型1表示大淘客商品2表示联盟商品。默认为1 (2020.11.4新增字段) +""" + +from dtkApi.apiRequest import Request + + +class FirstOrderGiftMoneyReq(Request): + url = 'goods/first-order-gift-money' + check_params = ['pageId', 'pageSize'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/basic/JdGoodsLinkReq.py b/dtkApi/basic/JdGoodsLinkReq.py new file mode 100644 index 0000000..c8285dd --- /dev/null +++ b/dtkApi/basic/JdGoodsLinkReq.py @@ -0,0 +1,24 @@ +# -*- coding:utf8-*- +from dtkApi.apiRequest import Request + +""" +京东商品转链 + @unionId Long 必须 推客的联盟ID + @materialId String 必须 推广物料url,例如活动链接、商品链接等;不支持仅传入skuid + @positionId Long 非必须 新增推广位id (若无subUnionId权限,可入参该参数用来确定不同用户下单情况) + @childPid String 非必须 联盟子推客身份标识(不能传入接口调用者自己的pid) + @subUnionId String 非必须 子渠道标识,您可自定义传入字母、数字或下划线,最多支持80个字符,该参数会在订单行查询接口中展示,需要有权限才可使用 + @couponUrl String 非必须 优惠券领取链接,在使用优惠券、商品二合一功能时入参,且materialId须为商品详情页链接(5.27更新:若不填则会自动匹配上全额最大的优惠券进行转链) + @chainType Integer 非必须 转链类型,默认短链,短链有效期60天1:长链2:短链 3:长链+短链, + @giftCouponKey String 非必须 礼金批次号 +""" + + +class JdGoodsLinkReq(Request): + url = 'dels/jd/kit/promotion-union-convert' + check_params = ['unionId','materialId'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/basic/OrderDetailsReq.py b/dtkApi/basic/OrderDetailsReq.py new file mode 100644 index 0000000..a1cfad4 --- /dev/null +++ b/dtkApi/basic/OrderDetailsReq.py @@ -0,0 +1,28 @@ +# -*- coding:utf8-*- + +""" +淘系订单查询 + @queryType Number 必须 查询时间类型,1:按照订单淘客创建时间查询,2:按照订单淘客付款时间查询,3:按照订单淘客结算时间查询,4:按照订单更新时间(5.27新增字段) + @positionIndex String 非必须 位点,第一页数据返回里面有个这个字段,查第二页的数据的时候就传过去 + @pageSize Number 非必须 页大小,默认20,1~100 + @memberType Number 非必须 推广者角色类型,2:二方,3:三方,不传,表示所有角色 + @tkStatus Number 非必须 淘客订单状态,12-付款,13-关闭,14-确认收货,3-结算成功;不传,表示所有状态 + @endTime String 必须 订单查询结束时间,订单开始时间至订单结束时间,中间时间段日常要求不超过3个小时,但如618、双11、年货节等大促期间预估时间段不可超过20分钟,超过会提示错误,调用时请务必注意时间段的选择,以保证亲能正常调用! 时间格式:YYYY-MM-DD HH:MM:SS + @startTime String 必须 订单查询开始时间。时间格式:YYYY-MM-DD HH:MM:SS + @jumpType Number 非必须 跳转类型,当向前或者向后翻页必须提供,-1: 向前翻页,1:向后翻页 + @pageNo Number 非必须 第几页,默认1,1~100 + @orderScene Number 非必须 场景订单场景类型,1:常规订单,2:渠道订单,3:会员运营订单,默认为1 + +""" + +from dtkApi.apiRequest import Request + + +class OrderDetailsReq(Request): + url = 'tb-service/get-order-details' + check_params = ['queryType','endTime','startTime'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/basic/ParseContentReq.py b/dtkApi/basic/ParseContentReq.py new file mode 100644 index 0000000..65ddbfc --- /dev/null +++ b/dtkApi/basic/ParseContentReq.py @@ -0,0 +1,17 @@ +# -*- coding:utf8-*- + +""" +淘系万能解析 +@content String 必须 包含淘口令、链接的文本。优先解析淘口令,再按序解析每个链接,直至解出有效信息。如果淘口令失效或者不支持的类型的情况,会按顺序解析链接。如果存在解析失败,请再试一次 +""" +from dtkApi.apiRequest import Request + + +class ParseContentReq(Request): + url = 'tb-service/parse-content' + check_params = ['content'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/basic/ParseTaokoulingReq.py b/dtkApi/basic/ParseTaokoulingReq.py new file mode 100644 index 0000000..49b7409 --- /dev/null +++ b/dtkApi/basic/ParseTaokoulingReq.py @@ -0,0 +1,17 @@ +# -*- coding:utf8-*- + +""" +淘口令解析 +@content String 必须 包含淘口令的文本。 若文本中有多个淘口令,仅解析第一个。(目前仅支持商品口令和二合一券口令) +""" +from dtkApi.apiRequest import Request + + +class ParseTaokoulingReq(Request): + url = 'tb-service/parse-taokouling' + check_params = ['content'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/basic/PrivilegeLinkReq.py b/dtkApi/basic/PrivilegeLinkReq.py new file mode 100644 index 0000000..7d1e657 --- /dev/null +++ b/dtkApi/basic/PrivilegeLinkReq.py @@ -0,0 +1,27 @@ +# -*- coding:utf8-*- + +""" +高效转链 + @goodsId String 必须 淘宝商品id + @couponId String 非必须 商品的优惠券ID,一个商品在联盟可能有多个优惠券,可通过填写该参数的方式选择使用的优惠券,请确认优惠券ID正确,否则无法正常跳转 + @pid string 非必须 推广位ID,用户可自由填写当前大淘客账号下已授权淘宝账号的任一pid,若未填写,则默认使用创建应用时绑定的pid + @channelId string 非必须 渠道id将会和传入的pid进行验证,验证通过将正常转链,请确认填入的渠道id是正确的 channelId对应联盟的relationId + @rebateType Number 非必须 付定返红包,0.不使用付定返红包,1.参与付定返红包 + @specialId string 非必须 会员运营id + @externalId string 非必须 淘宝客外部用户标记,如自身系统账户ID;微信ID等 + @xid string 非必须 团长与下游渠道合作的特殊标识,用于统计渠道推广效果 (新增入参) + @leftSymbol string 非必须 淘口令左边自定义符号,默认¥ (2021/3/9新增入参) + @rightSymbol string 非必须 淘口令右边自定义符号,默认¥ (2021/3/9新增入参) + +""" +from dtkApi.apiRequest import Request + + +class PrivilegeLinkReq(Request): + url = 'tb-service/get-privilege-link' + check_params = ['goodsId'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/basic/SuperCategoryReq.py b/dtkApi/basic/SuperCategoryReq.py new file mode 100644 index 0000000..f4b6baa --- /dev/null +++ b/dtkApi/basic/SuperCategoryReq.py @@ -0,0 +1,17 @@ +# -*- coding:utf8-*- + +""" +超级分类 + +""" +from dtkApi.apiRequest import Request + + +class SuperCategoryReq(Request): + url = 'category/get-super-category' + check_params = [] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/basic/TwdToTwdReq.py b/dtkApi/basic/TwdToTwdReq.py new file mode 100644 index 0000000..48f3d7b --- /dev/null +++ b/dtkApi/basic/TwdToTwdReq.py @@ -0,0 +1,21 @@ +# -*- coding:utf8-*- + +""" +淘口令转淘口令 +  @content string 必须 支持包含文本的淘口令,但最好是一个单独淘口令 +  @pid string 非必须 推广位ID,用户可自由填写当前大淘客账号下已授权淘宝账号的任一pid,若未填写,则默认使用创建应用时绑定的pid +  @channelId string 非必须 渠道id将会和传入的pid进行验证,验证通过将正常转链,请确认填入的渠道id是正确的 +  @special_id string 非必须 会员运营ID +  @external_id string 非必须 淘宝客外部用户标记,如自身系统账户ID;微信ID等 +""" +from dtkApi.apiRequest import Request + + +class TwdToTwdReq(Request): + url = 'tb-service/twd-to-twd' + check_params = ['content'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/basic/__init__.py b/dtkApi/basic/__init__.py new file mode 100644 index 0000000..2d906b4 --- /dev/null +++ b/dtkApi/basic/__init__.py @@ -0,0 +1,27 @@ +# -*- coding:utf8 -*- + +""" +大淘客开放平台--基础工具API +ActivityLinkReq:官方活动会场转链 +CreatTaokoulingReq:淘口令生成 +FirstOrderGiftMoneyReq:首单礼金 +OrderDetailsReq:淘系订单查询 +ParseContentReq:淘系万能解析 +ParseTaokoulingReq:淘口令解析 +PrivilegeLinkReq:高效转链 +SuperCategoryReq:超级分类 +CollectionListReq:我的收藏 +JdGoodsLinkReq:京东商品转链 +""" + +from dtkApi.basic.ActivityLinkReq import ActivityLinkReq +from dtkApi.basic.CreatTaokoulingReq import CreatTaokoulingReq +from dtkApi.basic.FirstOrderGiftMoneyReq import FirstOrderGiftMoneyReq +from dtkApi.basic.OrderDetailsReq import OrderDetailsReq +from dtkApi.basic.ParseContentReq import ParseContentReq +from dtkApi.basic.ParseTaokoulingReq import ParseTaokoulingReq +from dtkApi.basic.PrivilegeLinkReq import PrivilegeLinkReq +from dtkApi.basic.SuperCategoryReq import SuperCategoryReq +from dtkApi.basic.TwdToTwdReq import TwdToTwdReq +from dtkApi.basic.CollectionListReq import CollectionListReq +from dtkApi.basic.JdGoodsLinkReq import JdGoodsLinkReq diff --git a/dtkApi/basic/__pycache__/ActivityLinkReq.cpython-36.pyc b/dtkApi/basic/__pycache__/ActivityLinkReq.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0b1200cc72d6374d11bfd4d43e02d6bb0f26dd24 GIT binary patch literal 1329 zcmZ`(-A~(A6u|rn*>l{+9s;Ds*olg%ATS~o@;yHk=U;7RHEub z5npK=LN_2oDc#5l9b;|irfq~ICI5#XTVKb1;(bp$H}o_niD;ZaRj)2b<}%7h>((wKN$FB+yUE0cYFxUt}sYJKkP zTJ!Pu?F?gAkLx+RmVejdm40{g2Y97$T+ce$0$}j=kIumcF8|O@;N*AlVZ+Jq;FYKU z;JuxOU0t*fv-qfNH%bAf6*9T77>~w=q64wvXgnH?#$zLK2;$!}+XcK_@DqF+9UB=L z86LiL=`Hm7qWi}}8#*>LJQM}$fx*GS*m3#{@1yR@-pP+jgaj zH+Ns(d*WojZWiZpb*;Gu=B9H1rQU)a0Eb6)DaDf-kNp>CWy_mgl|}q=k#y#poL%3- z3p@T%xAE95<-EO|yFW|rY%RQdMYpj8c<04aT&eh-1h2b)&@7c9C|vs4XK(^;XJa3* z-~`t2Xh!*;P~4?GTrS#&_uZpaAh0XH64r;mIE5vM%UOSkUwqrF%{$pgB$o9Cu0FFX z%kJDOXtG_+$KrNnk3gP313%7Hadr{>_)!k74cgfXDD1)Xq6lSm-jHr(B*PSl{r3ao z>d*K&SV$;A!JN|~1@lZ#QVG_d@kEC|-PW1Qf+^pY&6&?+Wg6)2ynoTW*>6btZCQ{m z@`1BI1>QvO$zd0$;8ODL0J#EUdu!#_mElvqM?Vc* z`YEE$5JduRQ|}Rz0o4s+gg|vsEES?#d*cz->f|_46@c}upT-49E|>+K^uGmcBW&># UR;%k{KcY{&2sO!xrMj8F0Cw?4zW@LL literal 0 HcmV?d00001 diff --git a/dtkApi/basic/__pycache__/CollectionListReq.cpython-36.pyc b/dtkApi/basic/__pycache__/CollectionListReq.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..940dbdca88922cac493bf006650e01a1ca7dc4c5 GIT binary patch literal 2137 zcmZ`)%}*Og6kqR}kGiByE|q$yw1*su#HKbR>4&P8DvF{?6_t{lETpaD-I8tmm0fcn z>cIqz9q@nHdj}!Nv`o?RB3+hTUJM-R~_kQoqZ)S$h zopS`I-~Be&LlEzYj?WI`VQA7t=s3bna5j$g+5DuNv=KK5j^gao1ZU^TDauW8UAKt- z?(zLDg3#g%`s%cnsTkR`V>sj)sTf8iy`M9=`Q|lG5Msh-1+HVJpXN_D578>P3 zJEL@2tryJ6CWm{|iZ!{Oc45gP*eAfbU zZ2!pG$6Ek^hRAn#kv2Cr+ncGC(>VM_&O-2EYn@IEXgz}R&tM}4TT^4MfOgYrE#<;W z*Z=_Ra>8PipVsGR@PZC^YCUR^!+5(0WpX(Ot~du=PUiqPa}0Zh6J8w?t6lH)62#OF zR*?J@vR11Rz4i=s1)Hc_lNJbIU4&_(X>I;y=mKbw;+H%Z{WKsG+U#ps{ z8Ot6v;$39JH840Z1b-kEI$X5;f>V7>24X%=sI>$HIuXn#v}~nKrECTJZ>$1G(QFAd z5A~(Of6YPfq8U{9+t`l6c#vkaauPk?hw%{2=xkdLXvW-} z175?}akXV?Za;y^*Wh9~hDv+JVbM~51Cpg(e7fX{o_P&6--3PSzzXSdg72BAk=q7^ z3&7~|9!g*^ERHWYMm^j%V+&e20~gV$Wmg!rexPkN;8en5xPM@J)Od8t z>gxYm0VaH2cUIs)z!k}R!$L4{Tk!M0iX5ENv&BcV_-eH7XDdGkZNe2#^xKr4oBaK8 zUJ85h{P-hbFbqwiq2md+4ITrMv%#fLa?}{NMm2T^Wa8q!cy*7w|Km3QMgt!Jx`VzW7i9c|&K_jO~@gn>w z4$tgZ%8^Ox7Q9gqo*Gf88`p35lS+>#B(US6PqBN%F{!^xad_|Y-g_*b;i#g=FDZSN ztUc=yt@ITN)$u;`gfzD3GZEx=pPM+_yD+PB<>y)nh4(w21dE? zy`MtD=pBzFct_7v;8JKp`54l_$xESNK;l2ciQyNPu${L(_~NX6hwVszx6;e90gs<& zS;fJ!{vbE*!{a`dy+7{pSsJkqyonCnoyQ#p-O+uDrxbJ-ph?}(_1f&VUaBP<>9;FA qEXxJG;Prx)$|Xp!O$QNEpk>(Mu;m|nReHa-5dDA=w6e03ebm1)`BWAF literal 0 HcmV?d00001 diff --git a/dtkApi/basic/__pycache__/CreatTaokoulingReq.cpython-36.pyc b/dtkApi/basic/__pycache__/CreatTaokoulingReq.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7d00d239768f14224df1227c3c40a34e2c607156 GIT binary patch literal 1129 zcmZuwNlz3(6s}%o23uUOCT0#C91`GQyck0;YK)2Dz;c;P(l%Y?Fw!&KboUq`9vEaZ zK_CH?hzk=IHx?5$APf@!Mjv&md-}xPldrl5Ge#?Uuikt0>Z`Za#SQ`SR6rEB>W>GDd0#aN<{PDIfNv4dx1_bm-kk@ zx!3N*jAWAscHFYfOfDUd(}PjJxEBu{Xz8n49HV2Sbo1+BY0{rRpu1~yQZ^< zJ>7Wbt*=RWQ#-o;*X_#or^^1ix47vpjr+wf06^D<4@=K`ZQHOex3uInC5M}BMekAc zW>wF&FpuE*^4@CTL`y?-a|zjZpSB z9@Ci-@68jI>*h=U!$Ns~IXpTnExL1C?qtE;S@H|BbY|;$*j}k({by;+39yO9eVJRW2>j(bYyt)6@D<_WsLP)dC!=tsisg?zk=G zEn?on|2l_lsJ7(!NEos=_tu@*zIC0IJ%D8o260I~^cy8OC)Ppw^Te`MrXMXHgf<{6 z4ve5A2a~~L4km!dLYhyCSj3SLl#JjgOhn8%d(9+@-KFS#dR~JG0L;O2c25(;dOxF* z7L^@0L6fTIj>yKv5uoWR3{$Y!9s#-rWL*IE5Zz}{xrXc6u1 zJ7k^&^;g@C%PC_(?N!WdN;gOj;F~Pm*JKRXy?QQ%?Y^rt(q=uV~>(5Vm<7 zFii#@gk8fenX@(T56JfF`2pnqwSy@bm T>eO8cBWgVcT9B5=)$_jr5njf4 literal 0 HcmV?d00001 diff --git a/dtkApi/basic/__pycache__/FirstOrderGiftMoneyReq.cpython-36.pyc b/dtkApi/basic/__pycache__/FirstOrderGiftMoneyReq.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..168e8b61036afda92e6bf387c08f4aff253a94ed GIT binary patch literal 1677 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 Az5oCK literal 0 HcmV?d00001 diff --git a/dtkApi/basic/__pycache__/ParseTaokoulingReq.cpython-36.pyc b/dtkApi/basic/__pycache__/ParseTaokoulingReq.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e55aa90a7637dec7d9a4878753b761b4f30d10d1 GIT binary patch literal 854 zcmZuv&ubGw6rS1L{9sMBdKF3z70e;^;7vp#QhE#0^b`W?c4tgulHKjhMriTS+D2PU zG58Cqr68?{8Wp@4Ou_$Sj&^s`o_hD>n`|rr9e8i%z4y(x?|nO0$HsJj_t%|E3POiy zWNC2Df$>Rj1Qij%M5*DrQdBUSK}03mIwBfX*3_a(Vg;0mH@*Q>55K<-p6>a*{iFAL z;ci>cS&r>d+e@bl9;?{pbnvrz{I-`4TFs#S=@i}HUJqYA4tF|-D-Y90Pu@j=-~Al! zYzF(=e)r=k^yHxB_nHxXzti!%D^P`NCkGq-H(!FyEvSYszJ{&U;N_#>`D)Zo@T}$k zXa(&Jzy}-MD0yA8#|5~f=*8muNXla+ZUCUk3oT2(_vA`U&6 zbuLm-ZWtw4G`mpY9%!L)TD$uJv9r*@@7(mYlDlLrn5{VTwfyClw(sW(fx>)4#0latBUh446Dp7_s&5pX^e7fHjg%{ny_N5f3P fh{M;w)8M+gV}l2s(HM;+aetb?&MoKpV)MtUUh literal 0 HcmV?d00001 diff --git a/dtkApi/basic/__pycache__/PrivilegeLinkReq.cpython-36.pyc b/dtkApi/basic/__pycache__/PrivilegeLinkReq.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0625a0dfc20401f20cf85e30fd9d9404a19e7da9 GIT binary patch literal 1864 zcmbVNTTdHD6yCMX#SXMo>Pw}zPpMQ(h1{N6RS{K*BBTmcAx{?4)_5moi!Ym9I|@-B zAP!)ci%Ge}+-(AsKw{HU)oW~HiJ!5L?ap4Fc<)os?3jQ84^>y1@y^Vd?|kPwXOC~S zwt6Pl|N7yxMuz#DIrq5Wy%UCf6(*kXF+9sVLTuRKbFj=^hIjI=XAJK`j)c?aBXayRepjY&cz=*G2CD_3^w#SG4`;`uQ=J0kGJ zE)b22(a4#hwYpZfrB=q$Gp&-*6Iq;8y1Py)lbSNDDZBI#uk4s3bH?&IP8ZBXRbNTr z%_TT}djss@$QoWUYvVY#hsPGp!WK?H)#vvCSYIgNO4=Gu=@YNCYR#D2IqwbbnuVf~ z%bWSlw}9PU`kR-qM}TLxadJ_Ak<}08VG}EgSv&v%NK~T0yJZ^rSwQ;q4ldQS>XaP^ zc+-g!_`@wn!=mE+CpuZe{AD)QBx*x@ppYXsjnuefOMabEtf$L@J7f^ zZ0Rez6o=4DE?VUb;ciEUlgqe#h!5w8-xq%x<>xrR1PE}~PQ!pd59+1ig-}X9`qT zKt0X|PRZax2^iB9!-<4K{+K|jg;17IzdwfV4~fX#6A$+z$$ciZR)#u*q|X_L8+dXQ zd|&U-lqo93#lssNP!pOm{mu#TB8w;>_%9WPsPQ~w)@IC^Evh1V979s%a_f5O=Qr@? zf|b~z>DRO4W`3V!Yx^nGfqA%R9F&dnIwTm1gVf0~KFVvgTz8l8CPnx>zO1tF@`g2E zBLOHAx}s23@k~;yu7GSts-)+CCawx&;0iozhttGKK1VHSVZ!IDudN(sPbx`$VIOa- zL5e_@lZx#(gdW6thr<2Q&?OZDUv>JWR^G(LZS$xEfq?j0DP_DS<@*IK!;{*UjeYa_ z%^TNlUHkG9ACeFp_zzCf2mjlN$AY%Tcv-dS9(ou@ax6gBr;h_(I$_A4!h{$f3k}f0 zv(V@qLDuJ@&Cl0B+n(C?y(BymLMVv76C#6v_vDjUf4hvNM?wHy3!+%Ncxuod0t;VL zy(b1(fF}?6ZGiDD4Eb}Ieqw$kgN5NpIHara>*UGGMRs||l(QF_GBjOhkLtX8=f2mW zHu*(?i%TKZ<(Go8w?Xv;22fy-BP+F0^h^G*thUg-`l?Byv8ztF2U@sf6ngNAky?Sl zKez9E)h74SqSvKD?o=hq+Wr*?;#m_ zx{N*|agl!%hHYb?e0;(DoN14@QEle9h(C-tPW5nHILgOE)D4dLmr`Fv(4( z_sK*kpPSwzOD9Yp!jR#=jcI0GY@^fO>+!nOCXVBy0YLqL2GRlH)hj_F*|!bP0owQk TRc-#7GP>PHph-|Jw#E4`!Hb@f literal 0 HcmV?d00001 diff --git a/dtkApi/basic/__pycache__/SuperCategoryReq.cpython-36.pyc b/dtkApi/basic/__pycache__/SuperCategoryReq.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8e2be8bec62b5b48b667b8af95f2bef3f6887a5b GIT binary patch literal 674 zcmZWmJ#Q2-5cSu6u(^X!lQIQcTqx)eih`mj-4!{i)k?& zC8DIEfPZ2-5DNSSD#p7P=>(SEvu8Yho@YNE4x?}HzrQ%6g!~{IL*V)V;dYULBm^k1 zoE9u$lpGV_AT9|A%`SMtp)(MZ@zr^d3|;B>1!1I#uSOE@15w=TDvL> z@$F!^I6$}^Bux^E_b{LdpOQoX1Aa-84hYol`0Yt;v^`Xno|blnYUdBKb?|7atC0)a zquW%5cA6394&o5u9wNOVuLCH8T`;?gGlvj~kOlURPtY!2$;X}_A3cwm?9sJopdXkz|HdD4pOQV-4 zKXR}bnN>9_mnl?>XJ($hRBoQ7|GM5YE5C()PqZ`T(&_NzF8mdt+w^?rzw(XJaoqKN zDVM6yQu;{BqJ%mR>w%P~waVKayM*#vBM7h#i$vBb}qBRf5h6L(HjdmLmW7^$nfs;j^Hs=9j496T61 zQ~GeNCLr`bYWqZ3_rNetfxswK3JxWeBiE4Hkrk+*@yJ%xFC|O8mMcZ-qWAID17pxf!1J8>@b)5NsFx$~c4#7s1$y-vhIU{|ml#IrMWxuiDFKqVp zhW_NHNp$r)2g15RN$JMpU}7sQzFVC3%dc3ip5K96@OO8-|18h?1Ii0m!)|GnzAHP8 zQeUt4@?I=}=0kDLj$R=nd19Cf)Av8u?6jY99}*;Gy=D!?ZUJe<%*&7qu{!shS= zEuFe98)+rgmh)+C)IKms%qzsua;ia&vXs~>N8DlV*70`FHn0A8#O{@Brj*e9laZH^cWL|nP5cQ#1Bk`KMZ1aBLbq66S;`cwDreDJ1R*yrvU1a jkp5{%s&(Z$yXK~28(OUpsi&Q0HwGgg zi;)0&cHBrriW~GH|p*jN2D6L#8)lqO(NpK0GV|`3pJonPa zFf3kKGq>jO#uDBgGH3Sj&L*DtmQ3QsQuV_S-de>YTb;dk+0Kk1KbMVskE~`NNzXd) z#+*63WBw@PH=ioI^LU|T?XB0Q_t_MZ1fySoS(pQ|I$(S4{E6jCd8InDXci{fJ2KLZ zhe(uAxBS$&4^=5|+iD+Y@p!SivRfOQV(E65WC$|Qk20#8Ws9^qUNje1t*=XLuYhzZ z1yw^*jenNP_L%j0&stkH-%lP|{?p8{1(CUcG$0*MR{Jt%77Ity^yM@Or36D7fQU9} z{T!*5)^K68`n}AiAOI2p1Jxc`KkT6}Rh=I;XMS4mCfIvoH-w^o99$`_SGE^$aTHI# zI*PB6hk|MI9W=V|l2VHoB&jA&XJ<#ah}k67#%8fua%XmU~)vq>#)3_>-1n3bl-mgad` el?|S6*YXG98wwP2K)TsTqVxn=0{*Dad;JBzr{`G! literal 0 HcmV?d00001 diff --git a/dtkApi/original/ActivityCatalogueReq.py b/dtkApi/original/ActivityCatalogueReq.py new file mode 100644 index 0000000..068ab48 --- /dev/null +++ b/dtkApi/original/ActivityCatalogueReq.py @@ -0,0 +1,16 @@ +# -*- coding:utf8-*- + +""" +热门活动 +""" +from dtkApi.apiRequest import Request + + +class ActivityCatalogueReq(Request): + url = 'goods/activity/catalogue' + check_params = [] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/original/ActivityGoodsListReq.py b/dtkApi/original/ActivityGoodsListReq.py new file mode 100644 index 0000000..b84b086 --- /dev/null +++ b/dtkApi/original/ActivityGoodsListReq.py @@ -0,0 +1,23 @@ +# -*- coding:utf8-*- + +""" +活动商品 + @pageId String 必须 分页id,默认为1,支持传统的页码分页方式和scroll_id分页方式,根据用户自身需求传入值。示例1:商品入库,则首次传入1,后续传入接口第一次返回的pageid,接口将持续返回符合条件的完整商品列表,该方式可以避免入库商品重复;示例2:根据pagesize和totalNum计算出总页数,按照需求返回指定页的商品(该方式可能在临近页取到重复商品) +  pageSize Number 非必须 每页条数,默认为100,大于100按100处理 +  activityId Number 必须 通过热门活动API获取的活动id +  cid Number 非必须 大淘客一级分类ID:1 -女装,2 -母婴,3 -美妆,4 -居家日用,5 -鞋品,6 -美食,7 -文娱车品,8 -数码家电,9 -男装,10 -内衣,11 -箱包,12 -配饰,13 -户外运动,14 -家装家纺 +  subcid Number 非必须 大淘客二级分类ID:可通过超级分类接口获取二级分类id,当同时传入一级分类id和二级分类id时,以一级分类id为准 +  freeshipRemoteDistrict Number 非必须 偏远地区包邮:1.是,0.否 + +""" +from dtkApi.apiRequest import Request + + +class ActivityGoodsListReq(Request): + url = 'goods/activity/goods-list' + check_params = ['pageId','activityId'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/original/BrandListReq.py b/dtkApi/original/BrandListReq.py new file mode 100644 index 0000000..d5fe444 --- /dev/null +++ b/dtkApi/original/BrandListReq.py @@ -0,0 +1,18 @@ +# -*- coding:utf8-*- + +""" +品牌库 +@pageId String 必须 页码 +@pageSize Number 非必须 每页条数,默认为20,最大值100 +""" +from dtkApi.apiRequest import Request + + +class BrandListReq(Request): + url = 'tb-service/get-brand-list' + check_params = ['pageId'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/original/CatalogueReq.py b/dtkApi/original/CatalogueReq.py new file mode 100644 index 0000000..835d1b8 --- /dev/null +++ b/dtkApi/original/CatalogueReq.py @@ -0,0 +1,16 @@ +# -*- coding:utf8-*- +""" +精选专题 +""" + +from dtkApi.apiRequest import Request + + +class CatalogueReq(Request): + url = 'goods/topic/catalogue' + check_params = [] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/original/DdqGoodsListReq.py b/dtkApi/original/DdqGoodsListReq.py new file mode 100644 index 0000000..6e4d3c7 --- /dev/null +++ b/dtkApi/original/DdqGoodsListReq.py @@ -0,0 +1,17 @@ +# -*- coding:utf8-*- +""" +咚咚抢 + @roundTime String 非必须 默认为当前场次,场次时间输入方式:yyyy-mm-dd hh:mm:ss + +""" +from dtkApi.apiRequest import Request + + +class DdqGoodsListReq(Request): + url = 'category/ddq-goods-list' + check_params = [] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/original/ExclusiveGoodsListReq.py b/dtkApi/original/ExclusiveGoodsListReq.py new file mode 100644 index 0000000..74096e6 --- /dev/null +++ b/dtkApi/original/ExclusiveGoodsListReq.py @@ -0,0 +1,20 @@ +# -*- coding:utf8-*- + +""" +大淘客独家券商品 + @pageSize Number 必须 每页返回条数,每页条数支持输入10,20,50,100。默认50条 + @pageId String 必须 分页id:常规分页方式,请直接传入对应页码(比如:1,2,3……) + @cids String 非必须 大淘客的一级分类id,如果需要传多个,以英文逗号相隔,如:”1,2,3”。 + @sort String 非必须 排序方式,默认为0,0-综合排序,1-商品上架时间从高到低,2-销量从高到低,3-领券量从高到低,4-佣金比例从高到低,5-价格(券后价)从高到低,6-价格(券后价)从低到高 +""" +from dtkApi.apiRequest import Request + + +class ExclusiveGoodsListReq(Request): + url = 'goods/exclusive-goods-list' + check_params = ['pageId','pageSize'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/original/ExplosiveGoodsListReq.py b/dtkApi/original/ExplosiveGoodsListReq.py new file mode 100644 index 0000000..f7c575c --- /dev/null +++ b/dtkApi/original/ExplosiveGoodsListReq.py @@ -0,0 +1,19 @@ +# -*- coding:utf8-*- +""" +每日爆品推荐 +  @pageId String 必须 分页id:常规分页方式,请直接传入对应页码(比如:1,2,3……) +  @pageSize Number 必须 每页返回条数,每页条数支持输入10,20,50,100。默认50条 +  @PriceCid String 非必须 价格区间,1表示10~20元区;2表示20~40元区;3表示40元以上区;默认为1 +  @cids String 非必须 大淘客的一级分类id,如果需要传多个,以英文逗号相隔,如:”1,2,3”。1 -女装,2 -母婴,3 -美妆,4 -居家日用,5 -鞋品,6 -美食,7 -文娱车品,8 -数码家电,9 -男装,10 -内衣,11 -箱包,12 -配饰,13 -户外运动,14 -家装家纺。不填默认全部 +""" +from dtkApi.apiRequest import Request + + +class ExplosiveGoodsListReq(Request): + url = 'goods/explosive-goods-list' + check_params = ['pageId','pageSize'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/original/FriendsCircleListReq.py b/dtkApi/original/FriendsCircleListReq.py new file mode 100644 index 0000000..f10f83f --- /dev/null +++ b/dtkApi/original/FriendsCircleListReq.py @@ -0,0 +1,25 @@ +# -*- coding:utf8-*- + +""" +朋友圈文案 +  @pageSize Number 非必须 每页条数,默认为100,若小于10,则按10条处理,每页条数仅支持输入10,50,100 +  @pageId String 必须 分页id,默认为1,支持传统的页码分页方式 +  @sort String 非必须 排序方式,默认为0,0-综合排序,1-商品上架时间从高到低,2-销量从高到低,3-领券量从高到低,4-佣金比例从高到低,5-价格(券后价)从高到低,6-价格(券后价)从低到高 +  @cid String 非必须 大淘客的一级分类id,如6、4 +  @subcid String 非必须 大淘客的二级类目id,通过超级分类API获取。仅允许传一个二级id,当一级类目id和二级类目id同时传入时,会自动忽略二级类目id +  @pre Number 非必须 是否预告商品,1-预告商品,0-所有商品,不填默认为0 +  @freeshipRemoteDistrict Number 非必须 偏远地区包邮,1-是,0-非偏远地区,不填默认所有商品 +  @goodsId Number 非必须 大淘客id或淘宝id,查询单个商品是否有朋友圈文案,如果有,则返回商品信息及朋友圈文案,如果没有,显示10006错误 + +""" +from dtkApi.apiRequest import Request + + +class FriendsCircleListReq(Request): + url = 'goods/friends-circle-list' + check_params = ['pageId'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/original/GoodspriceTrendReq.py b/dtkApi/original/GoodspriceTrendReq.py new file mode 100644 index 0000000..c17bc27 --- /dev/null +++ b/dtkApi/original/GoodspriceTrendReq.py @@ -0,0 +1,17 @@ +# -*- coding:utf8-*- +""" +商品历史券后价 + @id String 必须 在大淘客的在线商品id(已下架的商品id不支持) + @goodsId String 非必须 淘宝商品id +""" +from dtkApi.apiRequest import Request + + +class GoodspriceTrendReq(Request): + url = 'goods/price-trend' + check_params = ['id'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/original/ListSimilerGoodsByOpenReq.py b/dtkApi/original/ListSimilerGoodsByOpenReq.py new file mode 100644 index 0000000..a80202f --- /dev/null +++ b/dtkApi/original/ListSimilerGoodsByOpenReq.py @@ -0,0 +1,18 @@ +# -*- coding:utf8-*- + +""" +猜你喜欢 + @id Number 必须 大淘客的商品id + @size Number 非必须 每页条数,默认10 , 最大值100 +""" +from dtkApi.apiRequest import Request + + +class ListSimilerGoodsByOpenReq(Request): + url = 'goods/list-similer-goods-by-open' + check_params = ['id'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/original/LiveMaterialGoodsListReq.py b/dtkApi/original/LiveMaterialGoodsListReq.py new file mode 100644 index 0000000..10478dd --- /dev/null +++ b/dtkApi/original/LiveMaterialGoodsListReq.py @@ -0,0 +1,18 @@ +# -*- coding:utf8-*- + +""" +直播好货 + @date String 非必须 选择某一天的直播商品数据,默认返回全部参与过直播,且未下架的商品。时间格式:2020-09-16 + @sort String 非必须 排序方式,默认为0,0-综合排序,1-商品上架时间从高到低,2-销量从高到低,3-领券量从高到低,4-佣金比例从高到低,5-价格(券后价)从高到低,6-价格(券后价)从低到高 +""" +from dtkApi.apiRequest import Request + + +class LiveMaterialGoodsListReq(Request): + url = 'goods/liveMaterial-goods-list' + check_params = [] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/original/OpGoodsListReq.py b/dtkApi/original/OpGoodsListReq.py new file mode 100644 index 0000000..959724d --- /dev/null +++ b/dtkApi/original/OpGoodsListReq.py @@ -0,0 +1,20 @@ +# -*- coding:utf8-*- + +""" +9.9包邮精选 +  @pageSize Number 必须 每页条数:默认为20,最大值100 +  @pageId String 必须 分页id:常规分页方式,请直接传入对应页码(比如:1,2,3……) +  @nineCid String 必须 9.9精选的类目id,分类id请求详情:-1-精选,1 -5.9元区,2 -9.9元区,3 -19.9元区(调整字段) + +""" +from dtkApi.apiRequest import Request + + +class OpGoodsListReq(Request): + url = 'nine/op-goods-list' + check_params = ['pageId','pageSize','nineCid'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/original/RankingListReq.py b/dtkApi/original/RankingListReq.py new file mode 100644 index 0000000..22db4f9 --- /dev/null +++ b/dtkApi/original/RankingListReq.py @@ -0,0 +1,21 @@ +# -*- coding:utf8-*- + +""" +各大榜单 +  @rankType Number 必须 榜单类型,1.实时榜 2.全天榜 3.热推榜 4.复购榜 5.热词飙升榜 6.热词排行榜 7.综合热搜榜 +  @cid Number 非必须 大淘客一级类目id,仅对实时榜单、全天榜单有效 +  @pageSize Number 非必须 每页条数返回条数(支持10,20.50,默认返回20条) +  @pageId String 非必须 分页id:常规分页方式,请直接传入对应页码(比如:1,2,3……)。超过200条,分页返回为空 + +""" +from dtkApi.apiRequest import Request + + +class RankingListReq(Request): + url = 'goods/get-ranking-list' + check_params = ['rankType'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/original/TbTopicListReq.py b/dtkApi/original/TbTopicListReq.py new file mode 100644 index 0000000..4598d5c --- /dev/null +++ b/dtkApi/original/TbTopicListReq.py @@ -0,0 +1,19 @@ +# -*- coding:utf8-*- +""" +官方活动(1元购) +  pageId String 必须 分页id,支持传统的页码分页方式 +  pageSize Number 非必须 每页条数,默认为20 +  type Number 非必须 输出的端口类型:0.全部(默认),1.PC,2.无线 +  channelID Number 非必须 阿里妈妈上申请的渠道id +""" +from dtkApi.apiRequest import Request + + +class TbTopicListReq(Request): + url = 'category/get-tb-topic-list' + check_params = ['pageId'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/original/TopicGoodsListReq.py b/dtkApi/original/TopicGoodsListReq.py new file mode 100644 index 0000000..b6a3bad --- /dev/null +++ b/dtkApi/original/TopicGoodsListReq.py @@ -0,0 +1,19 @@ +# -*- coding:utf8-*- +""" +专题商品 +  @pageId String 必须 分页id,默认为1,支持传统的页码分页方式和scroll_id分页方式,根据用户自身需求传入值。示例1:商品入库,则首次传入1,后续传入接口第一次返回的pageid,接口将持续返回符合条件的完整商品列表,该方式可以避免入库商品重复;示例2:根据pagesize和totalNum计算出总页数,按照需求返回指定页的商品(该方式可能在临近页取到重复商品) +  @pageSize Number 非必须 每页条数,默认为100,大于100按100处理 +  @topicId Number 必须 专辑id,通过精选专辑API获取的活动id + +""" +from dtkApi.apiRequest import Request + + +class TopicGoodsListReq(Request): + url = 'goods/topic/goods-list' + check_params = ['pageId','topicId'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/original/__init__.py b/dtkApi/original/__init__.py new file mode 100644 index 0000000..c78064b --- /dev/null +++ b/dtkApi/original/__init__.py @@ -0,0 +1,35 @@ +# -*- coding:utf8 -*- +""" +TbTopicListReq:官方活动(1元购) +DdqGoodsListReq:咚咚抢 +RankingListReq:各大榜单 +CatalogueReq:精选专题 +TopicGoodsListReq:专题商品 +OpGoodsListReq:9.9包邮精选 +BrandListReq:品牌库 +ListSimilerGoodsByOpenReq:猜你喜欢 +ActivityGoodsListReq:活动商品 +ActivityCatalogueReq:热门活动 +LiveMaterialGoodsListReq:直播好货 +ExplosiveGoodsListReq:每日爆品推荐 +ExclusiveGoodsListReq:大淘客独家券商品 +FriendsCircleListReq:朋友圈文案商品 +GoodspriceTrendReq:商品历史券后价 +""" + + +from dtkApi.original.TbTopicListReq import TbTopicListReq +from dtkApi.original.DdqGoodsListReq import DdqGoodsListReq +from dtkApi.original.RankingListReq import RankingListReq +from dtkApi.original.CatalogueReq import CatalogueReq +from dtkApi.original.TopicGoodsListReq import TopicGoodsListReq +from dtkApi.original.OpGoodsListReq import OpGoodsListReq +from dtkApi.original.BrandListReq import BrandListReq +from dtkApi.original.ListSimilerGoodsByOpenReq import ListSimilerGoodsByOpenReq +from dtkApi.original.ActivityGoodsListReq import ActivityGoodsListReq +from dtkApi.original.ActivityCatalogueReq import ActivityCatalogueReq +from dtkApi.original.LiveMaterialGoodsListReq import LiveMaterialGoodsListReq +from dtkApi.original.ExplosiveGoodsListReq import ExplosiveGoodsListReq +from dtkApi.original.ExclusiveGoodsListReq import ExclusiveGoodsListReq +from dtkApi.original.FriendsCircleListReq import FriendsCircleListReq +from dtkApi.original.GoodspriceTrendReq import GoodspriceTrendReq diff --git a/dtkApi/save/GoodsByTimeReq.py b/dtkApi/save/GoodsByTimeReq.py new file mode 100644 index 0000000..4d3939e --- /dev/null +++ b/dtkApi/save/GoodsByTimeReq.py @@ -0,0 +1,26 @@ +# -*- coding:utf8-*- +""" +定时拉取 +  @pageSize Number 非必须 每页条数,默认为100,最大值200,若小于10,则按10条处理,每页条数仅支持输入10,50,100,200 +  @pageId String 必须 分页id,默认为1,支持传统的页码分页方式和scroll_id分页方式,根据用户自身需求传入值。示例1:商品入库,则首次传入1,后续传入接口返回的pageid,接口将持续返回符合条件的完整商品列表,该方式可以避免入口商品重复;示例2:根据pagesize和totalNum计算出总页数,按照需求返回指定页的商品(该方式可能在临近页取到重复商品) +  @cid String 非必须 大淘客的一级分类id。当一级类目id和二级类目id同时传入时,会自动忽略二级类目id +  @subcid Number 非必须 大淘客的二级类目id,通过超级分类API获取。仅允许传一个二级id,当一级类目id和二级类目id同时传入时,会自动忽略二级类目id +  @pre Number 非必须 是否预告商品,1-预告商品,0-所有商品,不填默认为0 +  @sort String 非必须 排序方式,默认为0,0-综合排序,1-商品上架时间从新到旧,2-销量从高到低,3-领券量从高到低,4-佣金比例从高到低,5-价格(券后价)从高到低,6-价格(券后价)从低到高 +  @startTime String 非必须 开始时间,格式为yyyy-mm-dd hh:mm:ss,商品上架的时间大于等于开始时间 +  @endTime String 非必须 结束时间,默认为请求的时间,商品上架的时间小于等于结束时间 +  @freeshipRemoteDistrict Number 非必须 偏远地区包邮,1-是,0-非偏远地区,不填默认所有商品 +  @choice Number 非必须 是否为精选商品,默认全部商品,1-精选商品(3.19新增字段) + +""" +from dtkApi.apiRequest import Request + + +class GoodsByTimeReq(Request): + url = 'goods/pull-goods-by-time' + check_params = ['pageId'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/save/GoodsDetailsReq.py b/dtkApi/save/GoodsDetailsReq.py new file mode 100644 index 0000000..2299a2c --- /dev/null +++ b/dtkApi/save/GoodsDetailsReq.py @@ -0,0 +1,18 @@ +# -*- coding:utf8-*- + +""" +单品详情 +  @id Number 必须 大淘客商品id,请求时id或goodsId必填其中一个,若均填写,将优先查找当前单品id +  @goodsId String 非必须 淘宝商品id,id或goodsId必填其中一个,若均填写,将优先查找当前单品id +""" +from dtkApi.apiRequest import Request + + +class GoodsDetailsReq(Request): + url = 'goods/get-goods-details' + check_params = ['id'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/save/GoodsListReq.py b/dtkApi/save/GoodsListReq.py new file mode 100644 index 0000000..9104c85 --- /dev/null +++ b/dtkApi/save/GoodsListReq.py @@ -0,0 +1,41 @@ +# -*- coding:utf8-*- + +""" +商品列表 +  @pageId String 必须 默认为1,支持传统的页码分页方式和scroll_id分页方式,根据用户自身需求传入值。示例1:商品入库,则首次传入1,后续传入接口返回的pageid,接口将持续返回符合条件的完整商品列表,该方式可以避免入口商品重复;示例2:根据pagesize和totalNum计算出总页数,按照需求返回指定页的商品(该方式可能在临近页取到重复商品) +  @pageSize Number 非必须 每页条数,默认为100,最大值200,若小于10,则按10条处理,每页条数仅支持输入10,50,100,200 +  @sort String 非必须 排序方式,默认为0,0-综合排序,1-商品上架时间从高到低,2-销量从高到低,3-领券量从高到低,4-佣金比例从高到低,5-价格(券后价)从高到低,6-价格(券后价)从低到高 +  @cids String 非必须 大淘客的一级分类id,如果需要传多个,以英文逗号相隔,如:”1,2,3”。当一级类目id和二级类目id同时传入时,会自动忽略二级类目id +  @subcid Number 非必须 大淘客的二级类目id,通过超级分类API获取。仅允许传一个二级id,当一级类目id和二级类目id同时传入时,会自动忽略二级类目id +  @specialId Number 非必须 商品卖点,1.拍多件活动;2.多买多送;3.限量抢购;4.额外满减;6.买商品礼赠 +  @juHuaSuan Number 非必须 1-聚划算商品,0-所有商品,不填默认为0 +  @taoQiangGou Number 非必须 1-淘抢购商品,0-所有商品,不填默认为0 +  @tmall Number 非必须 1-天猫商品, 0-非天猫商品,不填默认所有商品 +  @tchaoshi Number 非必须 1-天猫超市商品, 0-所有商品,不填默认为0 +  @goldSeller Number 非必须 1-金牌卖家商品,0-所有商品,不填默认为0 +  @haitao Number 非必须 1-海淘商品, 0-所有商品,不填默认为0 +  @pre Number 非必须 1-预告商品,0-所有商品,不填默认为0 +  @preSale Number 非必须 1-活动预售商品,0-所有商品,不填默认为0。(10.30新增字段) +  @brand Number 非必须 1-品牌商品,0-所有商品,不填默认为0 +  @brandIds Number 非必须 当brand传入0时,再传入brandIds可能无法获取结果。品牌id可以传多个,以英文逗号隔开,如:”345,321,323” +  @priceLowerLimit Number 非必须 价格(券后价)下限 +  @priceUpperLimit Number 非必须 价格(券后价)上限 +  @couponPriceLowerLimit Number 非必须 最低优惠券面额 +  @commissionRateLowerLimit Number 非必须 最低佣金比率 +  @monthSalesLowerLimit Number 非必须 最低月销量 +  @freeshipRemoteDistrict Number 非必须 偏远地区包邮,1-是,0-非偏远地区,不填默认所有商品 +  @directCommissionType Number 非必须 定向佣金类型,3查询定向佣金商品,否则查询全部商品(12.22新增字段) +  @choice Number 非必须 是否为精选商品,默认全部,1-精选商品(3.19新增字段) + +""" +from dtkApi.apiRequest import Request + + +class GoodsListReq(Request): + url = 'goods/get-goods-list' + check_params = ['pageId'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/save/JdGoodsDetaillReq.py b/dtkApi/save/JdGoodsDetaillReq.py new file mode 100644 index 0000000..a9ca018 --- /dev/null +++ b/dtkApi/save/JdGoodsDetaillReq.py @@ -0,0 +1,17 @@ +# -*- coding:utf8-*- + +""" +京东商品详情 + @skuIds String 必须 商品skuId,多个使用逗号分隔,最多支持10个skuId同时查询(需使用半角状态下的逗号) +""" +from dtkApi.apiRequest import Request + + +class JdGoodsDetaillReq(Request): + url = 'dels/jd/goods/get-details' + check_params = ['skuIds'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/save/NewestGoodsReq.py b/dtkApi/save/NewestGoodsReq.py new file mode 100644 index 0000000..fa19cf8 --- /dev/null +++ b/dtkApi/save/NewestGoodsReq.py @@ -0,0 +1,38 @@ +# -*- coding:utf8-*- + +""" +商品更新 +  @pageId String 必须 分页id,默认为1,支持传统的页码分页方式和scroll_id分页方式,根据用户自身需求传入值。示例1:商品入库,则首次传入1,后续传入接口返回的pageid,接口将持续返回符合条件的完整商品列表,该方式可以避免入口商品重复;示例2:根据pagesize和totalNum计算出总页数,按照需求返回指定页的商品(该方式可能在临近页取到重复商品) +  @pageSize Number 必须 每页条数,默认为100,最大值200,若小于10,则按10条处理,每页条数仅支持输入10,50,100,200 +  @startTime Date 非必须 商品上架开始时间,请求格式:yyyy-MM-dd HH:mm:ss +  @endTime Date 非必须 商品上架结束时间,请求格式:yyyy-MM-dd HH:mm:ss +  @cids String 非必须 大淘客的一级分类id,如果需要传多个,以英文逗号相隔,如:”1,2,3”。当一级类目id和二级类目id同时传入时,会自动忽略二级类目id,1 -女装,2 -母婴,3 -美妆,4 -居家日用,5 -鞋品,6 -美食,7 -文娱车品,8 -数码家电,9 -男装,10 -内衣,11 -箱包,12 -配饰,13 -户外运动,14 -家装家纺 +  @subcid Number 非必须 大淘客的二级类目id,通过超级分类API获取。仅允许传一个二级id,当一级类目id和二级类目id同时传入时,会自动忽略二级类目id +  @juHuaSuan Number 非必须 1-聚划算商品,0-所有商品,不填默认为0 +  @taoQiangGou Number 非必须 1-淘抢购商品,0-所有商品,不填默认为0 +  @tmall Number 非必须 1-天猫商品,0-非天猫商品,不填默认全部商品 +  @tchaoshi Number 非必须 1-天猫超市商品,0-所有商品,不填默认为0 +  @goldSeller Number 非必须 1-金牌卖家,0-所有商品,不填默认为0 +  @haitao Number 非必须 1-海淘,0-所有商品,不填默认为0 +  @brand Number 非必须 1-品牌,0-所有商品,不填默认为0 +  @brandIds String 非必须 品牌id,当brand传入0时,再传入brandIds将获取不到结果。品牌id可以传多个,以英文逗号隔开,如:”345,321,323” +  @preSale Number 非必须 1-活动预售商品,0-所有商品,不填默认为0。(2020.10.30号新增字段) +  @priceLowerLimit Number 非必须 价格(券后价)下限 +  @priceUpperLimit Number 非必须 价格(券后价)上限 +  @couponPriceLowerLimit Number 非必须 最低优惠券面额 +  @commissionRateLowerLimit Number 非必须 最低佣金比率 +  @monthSalesLowerLimit Number 非必须 最低月销量 +  @sort String 非必须 排序字段,默认为0,0-综合排序,1-商品上架时间从新到旧,2-销量从高到低,3-领券量从高到低,4-佣金比例从高到低,5-价格(券后价)从高到低,6-价格(券后价)从低到高 + +""" +from dtkApi.apiRequest import Request + + +class NewestGoodsReq(Request): + url = 'goods/get-newest-goods' + check_params = ['pageId','pageSize'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/save/StaleGoodsByTimeReq.py b/dtkApi/save/StaleGoodsByTimeReq.py new file mode 100644 index 0000000..f35a4d2 --- /dev/null +++ b/dtkApi/save/StaleGoodsByTimeReq.py @@ -0,0 +1,19 @@ +# -*- coding:utf8-*- +""" +失效商品 +  @pageSize Number 非必须 每页条数,默认为100,最大值200,若小于10,则按10条处理,每页条数仅支持输入10,50,100,200 +  @pageId String 必须 分页id,默认为1,支持传统的页码分页方式和scroll_id分页方式,根据用户自身需求传入值。示例1:商品入库,则首次传入1,后续传入接口返回的pageid,接口将持续返回符合条件的完整商品列表,该方式可以避免入口商品重复;示例2:根据pagesize和totalNum计算出总页数,按照需求返回指定页的商品(该方式可能在临近页取到重复商品) 建议方式:第一页的时候,pegeId传1,当请求后会返回pageId字符串,第二页一直到后面的所有翻页都使用这个pageId的字符串就可以了 +  @startTime String 非必须 开始时间,默认为yyyy-mm-dd hh:mm:ss,商品下架的时间大于等于开始时间,开始时间需要在当日 +  @endTime String 非必须 结束时间,默认为请求的时间,商品下架的时间小于等于结束时间,结束时间需要在当日 +""" +from dtkApi.apiRequest import Request + + +class StaleGoodsByTimeReq(Request): + url = 'goods/get-stale-goods-by-time' + check_params = ['pageId'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/save/__init__.py b/dtkApi/save/__init__.py new file mode 100644 index 0000000..8c3d8a7 --- /dev/null +++ b/dtkApi/save/__init__.py @@ -0,0 +1,17 @@ +# -*- coding:utf8 -*- + +""" +GoodsListReq:商品列表 +GoodsByTimeReq:定时拉取 +GoodsDetailsReq:单品详情 +NewestGoodsReq:商品更新 +StaleGoodsByTimeReq:失效商品 +JdGoodsDetaillReq:京东商品详情 +""" + +from dtkApi.save.GoodsListReq import GoodsListReq +from dtkApi.save.GoodsByTimeReq import GoodsByTimeReq +from dtkApi.save.GoodsDetailsReq import GoodsDetailsReq +from dtkApi.save.NewestGoodsReq import NewestGoodsReq +from dtkApi.save.StaleGoodsByTimeReq import StaleGoodsByTimeReq +from dtkApi.save.JdGoodsDetaillReq import JdGoodsDetaillReq diff --git a/dtkApi/save/__pycache__/GoodsByTimeReq.cpython-36.pyc b/dtkApi/save/__pycache__/GoodsByTimeReq.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9735c44acd846456919603cd48d559b1feb8c4bd GIT binary patch literal 2459 zcmcIm&2JM&6yLR-FE@Nty`Ubd9yl}-OKm8XN~;RmBE%)C2&X90*6}W}iyfQYb*0cA z91_Pi+1P=6I1M4hkdTxRJ5-Pu+rbil#vaSg?CvS|p896Tahw3ht~BF)Z{NK4d++^b z#%GTlarYPh`Q`U^hIz|0JuY~^07E_rlfd*c0xLK|Y}nE3V42H|;1pb=jNlR-BhFr@ z(9*+nwZ_`p7{-kX^EkJK$I~b~>wdHJX6ZuIHz4)|Z;2hC) zwem0VgFK$u+^wosWzH-t>!q^S;{g#b#L@C9idWCrqB*{THnVy;<0T(a>QAhuy&hPM zmPd`rF|we^onA@c=^|E#&DT>XvEucdI_EhBeouk3eOOn7jvhq{4i0qG5uwx=APNcx z&=A+QFTJ{CR2~}hqhMn!4O3%0`wCUF=$&YyBmZ#QWp`yu*QQ4p} z&a9y9W3x7m?k@r^QfeDK)uYWZr~nw(4W2zglPRc}UfBX;R8aBEi+a3N&djfYbF;Wo zPbgc|D=XG;4J9TBn(Sk0X(cDn^2BcSK81V+Akzd%Y#G`Nl~5vzF9h8-3wfiEL&-9Z zS4gAnE<@Xl#40TT#f8-*u!htWK-uZmfwPcvW<-kw8+N8n#C#f|bRbjWyK2?|hov@=C@pfK(ipnLaJy{v*!LoulWqwDp~ zZ9$Rr>O3?O-C0Am9b;zYpg9F1$NCADcPM`V%YiW9*NV@ZwWPU~Xh6L9^A$6*4G9BM zpfpMhn}rfU0mypkDGh8l{C`R#D!p&p&K1$*6YJ3^x_f7@{;HQdr0{S!9mfmlhJ{|5 zK>78?Ca-TpIU*^0n{dBnICBq`vy_RXFncEh+4>&Ns8k7&Z5vQ{IT}MR-NB1n&?_tV zLa$`->?Y6z=T^bw3};Qptz;I|*7_W%^_>i;&jRQ%lq$XZn0x#?k6HO$qQqOgL-c zgdBp03x_#D_&g9e9}b_FW%%4&2H-kf28@G4)7VJE-0Y6V76*m*M>Z-`_`$sR`?L z0pfW%JXeHY4@daYWC6Nnjy2PdhV=&`LH`E{4P`a{er?6~8B3E!i8X6vtwCcichD+z z_O$mK!nH?>Xd{OUFM$bew*}WG)5U6SSH+t#QC9p!-g_MIash_?8B8M6%fbcg5LmcK z9RqByi(an1E%aK|j$V#L1o?*{(kJkC>%;(&zl_F0Axl8a~s$Aq&7E_=Alo!y%A@}+BC4z0}>4e~K5 zq`7?3fZWxhx%~mre}g9y2`Kr(verp;b*W9FIcrW>2Q_fXV(9u`jC2$b{QK>t^L^1F zf50b&`yx?s5ZrUJaD$5uDS^mfpP<~h7!CHxzTd>YgL$8h4rw0^h{{z_jz$J$@dQbV z{7qrl_o-pTVfW4;jmB6Wf*$xWu?WFlyr zrej2O!t@CYxfP~%*2T6uZC!VlOKanKA>s$GAJZI8LuU2nOQhkpVUt7KKk=%ye@790 MPb51f7u)Il4-%a)vj6}9 literal 0 HcmV?d00001 diff --git a/dtkApi/save/__pycache__/GoodsDetailsReq.cpython-36.pyc b/dtkApi/save/__pycache__/GoodsDetailsReq.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..15b7124311680ba9f818cc5a2706ce81cd1a7a05 GIT binary patch literal 925 zcmb_azi-n(6uz^apG|3*7?7AckRfGYLlr85s$$8|Fj#?%e&6?ed2}?rv-j(^uOajs z4IKmGX)rzkjvx~eOtdPlX{LtJEFwBFo*-gSZAmwE5-Xr=yph2OrDbPLu0A^6eIG2f z(np&|o6`_e-z)u-E;hI-hOJji;*Keg&!AYxfSv{b=oPQ9G!Z@eB15>Bx(G{yh@cps!gSu7HBbfH1HUsCzM1A<2aUx0uj6NAVa z!62qq#-Fv^kWna~_kf<1&s-7&E1VEiJu z2k4$M45lq8yb1SQfgzY(2gH?rLvog=dM7lIjOBG9H zBJSDDu5poxYJ)7nBECY0_kh2_Y4z?$#LmD3f2U@y6uo9?-e$F;>(M&E=Qye4yrw_z z){DfiT=SeFx9`*9DbAB#Q;Y!NIm$h^&gr;frT$Zd$MNF%)7?Xz`D|PyEvs(VsAY+? zWz}5LsH!+)Sqlxj8a-hdz+!3T6m~f8kQ-Aq9oz^QkAq8M1IP8Smd_d@VOhj20qWU^ h#UyYWte&ZLhmAvkN)M(`MRF>d=xPG8kduKk`U$MEPTK$g literal 0 HcmV?d00001 diff --git a/dtkApi/save/__pycache__/GoodsListReq.cpython-36.pyc b/dtkApi/save/__pycache__/GoodsListReq.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f55d8088acbdae68783f0ccf10a9a4f50fd5af0b GIT binary patch literal 3724 zcmcIn%WoS+82775lco|#95^9_DnX>!_|YO2AyfoasZ>?az{QGWw%#RKYJ1JD4Qj=~ zN$S{1>^N=J!2k z$8+*zcY6EjH?fl@(_bdT&j#=3ph>6T!J51#*34Q0=AgxEF`F)!SSxG0X<}`hWz_1m zvd8*Oy&X|&kIB@H=El&>FiI|{`Hk*BbART}g_%L_BHPs;5&6(y7dnV*`AU~oSyYP! zxm0#NtETYm7ETSz)tplKMakaO@{g1pK#ai)o_~z08FV`(`9&cR@bRp1oUF|~#_6Im zyMdE?YT{S5ys0h4@WT;6L-92ftNs-mQ3_@G$t3KQt+RuP@(e6S$)C0LdHh?RN)s+< zdP=E0pnW{GhB9~6gIRQE1$Yrfc$Vy`kE87|U=6}`f#25AbP_M;<;pGyqhbor?HH{A z3)QW)x=8nOB-@&M?JU&Vkk3@ zlG~I>Lw@|ZC;Nd!7wmqO6T7tKmAX6eR)$bm&Qli8z3X%mQcE#ZxCg#)>s@tn4Q*%S z@|25Af)9YS%L$87;ifV@Miv<0Cl`8R;E&~HDJ5^OKP2iPXys)b+?8ucVZF3Q9A@5Ith}*8s#=OKH7V;ELY@maEWp3@Tc-^7VtDsP8lpWIN&^Cap#j@%_Lfwrw)%@g(i|W)K z#4|93C_?dJwO9fwKp9k}8&gyKPillYKhFf9_O;{-jW(2?S4JKKcb5ZCLgHtkbl{x| z*aj+q+d&2%Z^KiI4a0!Pq5V7!VTLDG)tv`0aN41*E~COcuH;c70|Os8h`gTTN};Mg z%29KE7yUfS^hcRcD-V}l9nPZUZBj_;wE>a?kH_%RcymB5rBQzKc>+YggGj1kO>6ZA)>;4CAHavd)sLz$$ogyNY$uCow9$35u_ph<>(MTs5D~S z!-ztnx2-J(g#g>n1p-hLTU_n3Lk&>IQ{Ze=+-*W1(HcVx4~A}siXZKf?{$W*9^E~mre#Pi!|bp<_Gz{N*U8L0=a zicF|YIzjoK874MvSmTKNb-0UAI$OL3l}(?dmCFe=44jX~(zM@Lhca7mdg6r~{$q}o z8l^G=Rh5)Roe)$+{iG+$UQ%G8x}s`~pf?Jv=k%FAkJ|-}lv%2HSmgcOCE-U-yu=6j zNGsv?$4O}tYK8&f>u~tLB1|+9{6aJ=gueJUCUDxr=_FSd@o0`5jLWM~rYHx$5DfB? z#0#M-Oyrg7)Ik~ts4|tH2tgqf86q(!y~-GLHC{^6BbzS$R^&KH{_qtpC`7o=cnLm8 z{cS9XhBNBH5?b0usWM8%wUHvJ(007I1^=|@7$jiKSQCsnNVjEqk@H7BZEF72^>CYn zflo9veT#lDz}bmbCIQ%ke_2zvR*iGb2uIWFuD{s> zFyZZ>_Y1!n0LhR1AA|NOH0eEf{ABu$G&3~Is6{*l|5ldtY-E(Rq^SAz{jCMeZ<=osyJJ4LE(%?j&4dz-`s zzP)b}yMV#pXU~5)5WWtlj~E;f!dwX8?Gk&<9=;wK5<&xP#h#|iQvObw52(zU|l9cU5}J8rg_JFNQH(0Z_*$sI}uCQAQt=AkY=EnR~4N0DW~2DF6Tf literal 0 HcmV?d00001 diff --git a/dtkApi/save/__pycache__/JdGoodsDetaillReq.cpython-36.pyc b/dtkApi/save/__pycache__/JdGoodsDetaillReq.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f925c48a836eca4118c6bdfd991d61fccc7f55c1 GIT binary patch literal 827 zcmZWn&1(}u6rb7Me7J4Y9z7^I^k5EY6mKG>qNV7eht|^)SeMM0q}gP*JG(-QhlI4H z))qx8g%T9SZ-jcPK`Z?~=BU|ibL!obZ+0RCI`H1i`})oMy_sv7j2?dbeLtfh^al+s z4bD>_Y#bCp1|pa!Hm)m%g3$~jD$!OD(Wuf^4V5J3Q7#$0f>gct<7=3w)djV*3~PJ71xB%Hlv;W==J;Ky|*U^>-|ns7Kd9K#~+^`ZR|(QR@zog6&Y`_LiEVV;_!iveYRN!b4vj6hPp1P6)?473%3fu2&vh9)T+2}zcZ-6b=Q zL)dNVTUFZzz~u{s+N`iZ3S|)}l&PO5ag-TJIe`)$TqgDe$Sn|d8Pp@RAOwRbZN(dh zT_wWOgqJ8=>O4FHj9H!K>df@LoWfI_^?rBcQ6>P5$;4S>%xQp>wbe#L1NiC??vR*TGf zNQ(m_}fR2pkIsm8w9oW@h8Nt_a(j!7mHz;EykJn{5# Y;t-&ii6>Bb`iAUiQlQ4HG(4*Q110MYVE_OC literal 0 HcmV?d00001 diff --git a/dtkApi/save/__pycache__/NewestGoodsReq.cpython-36.pyc b/dtkApi/save/__pycache__/NewestGoodsReq.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0096ed022ffb32cc7fc100a25d2275a8edd18b35 GIT binary patch literal 3555 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 literal 0 HcmV?d00001 diff --git a/dtkApi/save/__pycache__/__init__.cpython-36.pyc b/dtkApi/save/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..84a41e34dd66a8039ff47f81da48031c96fccc04 GIT binary patch literal 742 zcmXr!<>g}D{3yYKiGkrU0}=r8861GPH~>hbFhnt=Fs3l&Fy=BvF)@PJ%sI@tEKw|A zHcJj`E?X2En9Z8Qp34!%0cNx1aOQGFae>+FIo!ECQ9M94M=*mXXX!Sev0U!?`6g+tOQ6dcG#PL4AiEyO=R-9aD8i3q8px#}MX2rriU?zI6;N0Z z!!3TAytmln<5TjJf96md~f7}9Vb7cqkrNMk5K1ZWWp zh7qW)E@A~KkViHGizkZMK&oVsRblw4h#jbAB|{MxkOC9GOkJ&F3M!K`5{q(U@(WV) z5(_eQi&L_73o1)8^7CRKrp17~9TOj)nU`4-AFo$Xd5gm)H$SB`C)EyQQZWyZU}556 Ggh2oRI{t?M literal 0 HcmV?d00001 diff --git a/dtkApi/search/DtkSearchGoodsReq.py b/dtkApi/search/DtkSearchGoodsReq.py new file mode 100644 index 0000000..20d0a32 --- /dev/null +++ b/dtkApi/search/DtkSearchGoodsReq.py @@ -0,0 +1,36 @@ +# -*- coding:utf8-*- + +""" +  @pageSize Number 必须 每页条数,默认为100,最大值200,若小于10,则按10条处理,每页条数仅支持输入10,50,100,200 +  @pageId String 必须 分页id,默认为1,支持传统的页码分页方式和scroll_id分页方式,根据用户自身需求传入值。示例1:商品入库,则首次传入1,后续传入接口返回的pageid,接口将持续返回符合条件的完整商品列表,该方式可以避免入口商品重复;示例2:根据pagesize和totalNum计算出总页数,按照需求返回指定页的商品(该方式可能在临近页取到重复商品) +  @keyWords String 必须 关键词搜索 +  @cids String 非必须 大淘客的一级分类id,如果需要传多个,以英文逗号相隔,如:”1,2,3”。当一级类目id和二级类目id同时传入时,会自动忽略二级类目id,一级分类id请求详情:1 -女装,2 -母婴,3 -美妆,4 -居家日用,5 -鞋品,6 -美食,7 -文娱车品,8 -数码家电,9 -男装,10 -内衣,11 -箱包,12 -配饰,13 -户外运动,14 -家装家纺 +  @subcid Number 非必须 大淘客的二级类目id,通过超级分类API获取。仅允许传一个二级id,当一级类目id和二级类目id同时传入时,会自动忽略二级类目id +  @juHuaSuan Number 非必须 是否聚划算,1-聚划算商品,0-所有商品,不填默认为0 +  @taoQiangGou Number 非必须 是否淘抢购,1-淘抢购商品,0-所有商品,不填默认为0 +  @tmall Number 非必须 是否天猫商品,1-天猫商品,0-非天猫商品,不填默认为所有商品 +  @tchaoshi Number 非必须 是否天猫超市商品,1-天猫超市商品,0-所有商品,不填默认为0 +  @goldSeller Number 非必须 是否金牌卖家,1-金牌卖家,0-所有商品,不填默认为0 +  @haitao Number 非必须 是否海淘商品,1-海淘商品,0-所有商品,不填默认为0 +  @brand Number 非必须 是否品牌商品,1-品牌商品,0-所有商品,不填默认为0 +  @brandIds String 非必须 品牌id,当brand传入0时,再传入brandIds将获取不到结果。品牌id可以传多个,以英文逗号隔开,如:”345,321,323” +  @priceLowerLimit Number 非必须 价格(券后价)下限 +  @priceUpperLimit Number 非必须 价格(券后价)上限 +  @couponPriceLowerLimit Number 非必须 最低优惠券面额 +  @commissionRateLowerLimit Number 非必须 最低佣金比率 +  @monthSalesLowerLimit Number 非必须 最低月销量 +  @sort String 非必须 排序字段,默认为0,0-综合排序,1-商品上架时间从新到旧,2-销量从高到低,3-领券量从高到低,4-佣金比例从高到低,5-价格(券后价)从高到低,6-价格(券后价)从低到高 +  @freeshipRemoteDistrict Number 非必须 偏远地区包邮,1-是,0-非偏远地区,不填默认所有商品 + +""" +from dtkApi.apiRequest import Request + + +class DtkSearchGoodsReq(Request): + url = 'goods/get-dtk-search-goods' + check_params = ['pageId','pageSize','keyWords'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/search/JdGoodsReq.py b/dtkApi/search/JdGoodsReq.py new file mode 100644 index 0000000..6c12ddb --- /dev/null +++ b/dtkApi/search/JdGoodsReq.py @@ -0,0 +1,42 @@ +# -*- coding:utf8-*- + +""" +京东联盟搜索 +  @cid1 Long 否 一级类目id +  @cid2 Long 否 二级类目id +  @cid3 Long 否 三级类目id +  @pageId Integer 否 页码 +  @pageSize Integer 否 每页数量,单页数最大30,默认20 +  @skuIds String 否 skuid集合(一次最多支持查询100个sku),多个使用“,”分隔符 +  @keyword String 否 关键词,字数同京东商品名称一致,目前未限制 +  @priceFrom BigDecimal 否 商品券后价格下限 +  @priceTo BigDecimal 否 商品券后价格上限 +  @commissionShareStart Integer 否 佣金比例区间开始 +  @commissionShareEnd Integer 否 佣金比例区间结束 +  @owner String 否 商品类型:自营[g],POP[p] +  @sortName String 否 排序字段(price:单价, commissionShare:佣金比例, commission:佣金, inOrderCount30Days:30天引单量, inOrderComm30Days:30天支出佣金) +  @sort String 否 asc:升序;desc:降序。默认降序 +  @isCoupon Integer 否 是否是优惠券商品,1:有优惠券,0:无优惠券 +  @pingouPriceStart BigDecimal 否 拼购价格区间开始 +  @pingouPriceEnd BigDecimal 否 拼购价格区间结束 +  @brandCode String 否 品牌code +  @shopId Integer 否 店铺Id +  @hasBestCoupon Integer 否 1:查询有最优惠券商品;其他值过滤掉此入参条件。(查询最优券需与isCoupon同时使用) +  @pid String 否 联盟id_应用iD_推广位id +  @jxFlags String 否 京喜商品类型,1京喜、2京喜工厂直供、3京喜优选(包含3时可在京东APP购买),入参多个值表示或条件查询 +  @spuId Long 否 主商品spuId +  @couponUrl String 否 优惠券链接 +  @deliveryType Integer 否 京东配送 1:是,0:不是 + +""" +from dtkApi.apiRequest import Request + + +class JdGoodsReq(Request): + url = 'dels/jd/goods/search' + check_params = [] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/search/ListHotWordsReq.py b/dtkApi/search/ListHotWordsReq.py new file mode 100644 index 0000000..f08cbd2 --- /dev/null +++ b/dtkApi/search/ListHotWordsReq.py @@ -0,0 +1,16 @@ +# -*- coding:utf8-*- + +""" +热搜榜 +""" +from dtkApi.apiRequest import Request + + +class ListHotWordsReq(Request): + url = 'etc/search/list-hot-words' + check_params = [] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/search/PddGoodsReq.py b/dtkApi/search/PddGoodsReq.py new file mode 100644 index 0000000..1e3df4a --- /dev/null +++ b/dtkApi/search/PddGoodsReq.py @@ -0,0 +1,32 @@ +# -*- coding:utf8-*- + +""" +拼多多联盟搜索 +  @activityTags String 否 活动商品标记数组,例:[4,7], 4-秒杀,7-百亿补贴,31-品牌黑标,10564-精选爆品-官方直推爆款,10584-精选爆品-团长推荐, 24-品牌高佣,20-行业精选,21-金牌商家,10044-潜力爆品,10475-爆品上新,其他的值请忽略 +  @blockCats String 否 自定义屏蔽一级/二级/三级类目ID,自定义数量不超过20个; +  @blockCatPackages String 否 屏蔽商品类目包:1-拼多多小程序屏蔽的类目&关键词;2-虚拟类目;3-医疗器械;4-处方药;5-非处方药 +  @catId Number 否 商品类目ID +  @goodsSignList String 否 商品goodsSign列表 访问括号内链接可查看字段相关说明(http://www.dataoke.com/kfpt/open-gz.html?id=100) +  @isBrandGoods Integer 否 是否为品牌商品 +  @keyword String 否 商品关键词(暂不支持goodid进行搜索,如需定向搜索商品建议使用goodsign进行搜索) +  @listId String 否 翻页时建议填写前页返回的list_id值 +  @merchantTypeList String 否 店铺类型数组 1-个人,2-企业,3-旗舰店,4-专卖店,5-专营店,6-普通店(未传为全部) +  @optId Number 否 商品标签类目ID +  @page Integer 否 默认值1,商品分页数 +  @pageSize Integer 否 默认100,每页商品数量 +  @rangeList String 否 筛选范围列表 样例:[{"range_id":0,"range_from":1,"range_to":1500}, {"range_id":1,"range_from":1,"range_to":1500}] +  @sortType Integer 否 排序方式:0-综合排序;2-按佣金比例降序;3-按价格升序;4-按价格降序;6-按销量降序;9-券后价升序排序;10-券后价降序排序;16-店铺描述评分降序 +  @withCoupon Integer 否 是否只返回优惠券的商品,0返回所有商品,1只返回有优惠券的商品 + +""" +from dtkApi.apiRequest import Request + + +class PddGoodsReq(Request): + url = 'dels/pdd/goods/search' + check_params = [] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/search/SuggestionReq.py b/dtkApi/search/SuggestionReq.py new file mode 100644 index 0000000..6fa8eb1 --- /dev/null +++ b/dtkApi/search/SuggestionReq.py @@ -0,0 +1,19 @@ +# -*- coding:utf8-*- + +""" +联想词 +  @keyWords String 必须 关键词 +  @type Number 必须 当前搜索API类型:1.大淘客搜索 2.联盟搜索 3.超级搜索 + +""" +from dtkApi.apiRequest import Request + + +class SuggestionReq(Request): + url = 'goods/search-suggestion' + check_params = ['keyWords','type'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/search/SuperGoodsReq.py b/dtkApi/search/SuperGoodsReq.py new file mode 100644 index 0000000..eb4f130 --- /dev/null +++ b/dtkApi/search/SuperGoodsReq.py @@ -0,0 +1,31 @@ +# -*- coding:utf8-*- + +""" +超级搜索 +  @type Number 必须 搜索类型:0-综合结果,1-大淘客商品,2-联盟商品 +  @pageId Number 必须 请求的页码,默认参数1 +  @pageSize Number 必须 每页条数,默认为20,最大值100 +  @keyWords string 必须 关键词搜索 +  @tmall Number 非必须 是否天猫商品:1-天猫商品,0-所有商品,不填默认为0 +  @haitao Number 非必须 是否海淘商品:1-海淘商品,0-所有商品,不填默认为0 +  @sort Number 非必须 排序字段信息 销量(total_sales) 价格(price),排序_des(降序),排序_asc(升序),示例:升序查询销量total_sales_asc 新增排序字段和排序方式,默认为0,0-综合排序,1-销量从高到低,2-销量从低到高,3-佣金比例从低到高,4-佣金比例从高到低,5-价格从高到低,6-价格从低到高(2021/1/15新增字段,之前的排序方式也可以使用) +  @specialId string 非必须 会员运营id +  @channelId string 非必须 渠道id将会和传入的pid进行验证,验证通过将正常转链,请确认填入的渠道id是正确的channelId对应联盟的relationId +  @priceLowerLimit string 非必须 商品券后价下限(2021/1/15新增字段) +  @priceUpperLimit string 非必须 商品券后价上限(2021/1/15新增字段) +  @endTkRate string 非必须 淘客佣金比率上限(2021/1/15新增字段) +  @startTkRate string 非必须 淘客佣金比率下限(2021/1/15新增字段) +  @hasCoupon string 非必须 是否有券,1为有券,默认为全部(2021/1/15新增字段) + +""" +from dtkApi.apiRequest import Request + + +class SuperGoodsReq(Request): + url = 'goods/list-super-goods' + check_params = ['pageId','pageSize','type','keyWords'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/search/TbServiceReq.py b/dtkApi/search/TbServiceReq.py new file mode 100644 index 0000000..ea86221 --- /dev/null +++ b/dtkApi/search/TbServiceReq.py @@ -0,0 +1,32 @@ +# -*- coding:utf8-*- +""" +联盟搜索 +  @pageNo Number 必须 第几页,默认1 +  @pageSize Number 必须 每页条数, 默认20,范围值1~100 +  @keyWords String 必须 查询词 +  @sort String 非必须 排序指标:销量(total_sales),淘客佣金比率(tk_rate), 累计推广量(tk_total_sales),总支出佣金(tk_total_commi),价格(price),排序方式:排序_des(降序),排序_asc(升序),示例:升序查询销量:total_sales_asc +  @source Number 非必须 是否商城商品,设置为1表示该商品是属于淘宝商城商品,设置为非1或不设置表示不判断这个属性(和overseas字段冲突,若已请求source,请勿再请求overseas) +  @overseas Number 非必须 是否海外商品,设置为1表示该商品是属于海外商品,设置为非1或不设置表示不判断这个属性(和source字段冲突,若已请求overseas,请勿再请求source) +  @endPrice Number 非必须 折扣价范围上限,单位:元 +  @startPrice Number 非必须 折扣价范围下限,单位:元 +  @startTkRate Number 非必须 媒体淘客佣金比率下限,如:1234表示12.34% +  @endTkRate Number 非必须 商品筛选-淘客佣金比率上限,如:1234表示12.34% +  @hasCoupon Boolean 非必须 是否有优惠券,设置为true表示该商品有优惠券,设置为false或不设置表示不判断这个属性 +  @specialId string 非必须 会员运营id +  @channelId string 非必须 渠道id将会和传入的pid进行验证,验证通过将正常转链,请确认填入的渠道id是正确的channelId对应联盟的relationId +  @itemLoc string 非必须 商品所在地,默认为全部商品,其他值:北京、上海、广州等必须是城市名称,不能带省份(2021/1/15新增字段) +  @needPrepay string 非必须 商品是否加入消费者保障,1为加入消费者保障,默认全部(2021/1/15新增字段) +  @includeGoodRate string 非必须 商品好评率是否高于行业均值,1为高于行业均值,默认全部(2021/1/15新增字段) + +""" +from dtkApi.apiRequest import Request + + +class TbServiceReq(Request): + url = 'tb-service/get-tb-service' + check_params = ['pageNo','pageSize','keyWords'] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/search/Top100Req.py b/dtkApi/search/Top100Req.py new file mode 100644 index 0000000..b25558c --- /dev/null +++ b/dtkApi/search/Top100Req.py @@ -0,0 +1,17 @@ +# -*- coding:utf8-*- + +""" +热搜榜 + @type Integer 非必须 1:买家热搜榜(默认)、2:淘客热搜榜 +""" +from dtkApi.apiRequest import Request + + +class Top100Req(Request): + url = 'category/get-top100' + check_params = [] + + # GET请求 + def getResponse(self): + if self.check_args(self.params, self.check_params): + return self.request('GET', api_url=self.url, args=self.params) diff --git a/dtkApi/search/__init__.py b/dtkApi/search/__init__.py new file mode 100644 index 0000000..e07aea2 --- /dev/null +++ b/dtkApi/search/__init__.py @@ -0,0 +1,20 @@ +# -*- coding:utf8 -*- + +""" +DtkSearchGoodsReq:大淘客搜索 +SuggestionReq:联想词 +SuperGoodsReq:超级搜索 +TbServiceReq:联盟搜索 +Top100Req:热搜记录 +ListHotWordsReq:热搜榜 +PddGoodsReq:拼多多联盟搜索 +JdGoodsReq:京东联盟搜索 +""" +from dtkApi.search.DtkSearchGoodsReq import DtkSearchGoodsReq +from dtkApi.search.SuggestionReq import SuggestionReq +from dtkApi.search.SuperGoodsReq import SuperGoodsReq +from dtkApi.search.TbServiceReq import TbServiceReq +from dtkApi.search.Top100Req import Top100Req +from dtkApi.search.ListHotWordsReq import ListHotWordsReq +from dtkApi.search.PddGoodsReq import PddGoodsReq +from dtkApi.search.JdGoodsReq import JdGoodsReq diff --git a/dtkApi/search/__pycache__/DtkSearchGoodsReq.cpython-36.pyc b/dtkApi/search/__pycache__/DtkSearchGoodsReq.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f6a5d9cbc27be25e66e6b39c351024e8f2f4ecd7 GIT binary patch literal 3620 zcmb_f%WoUU8DBp1uwtX}u>k@YMGh4prle%2O;HpMn!q&>7^&5wfFOXSxf_WQ$z^s) z6gGOGBvYg;QdF#GWLnYNaukyiEK3YYSwQ}Vo_I`lW_M4z_tf9)kP;X{cwjUOMSiBzb^-0}Jt*LbXr4WY>jMXwbHnUO_J2tG(GBZV=-C1uTPAy z1r2aoIYFliG(Bj%oFs`gkGtcVy92l#06W&{rg)({sszG)b&W`B1R4dz6WTCn3rnjk z>g8|r`TO9}7Y8{ro%xfBd&5MROSXU*(zcTPekRYFNjbZ`6WF+OOhoTFS9^fQAXJG z#1rlUt`|)wNq(OB6iQjHWpbkiP|1K+{ zdOEC$=jK%2C}ikFPTyJPy#By3pZR#9mXk<1x;IDi%TPuu#`V$@gj3%xTW%%mLv$er z-Hr7@7J$`xt@tgx22UAd+jJ&r#%D=(Pk&T2=cibx)`#GqALEZb9i1Ir_#)I~f0E+@ zRDYC5x;#v4r8EQ`5hl`fcDEMb*94G5+>s$rTc7o)0>FgRZ6_jgNT;{?UQW56R5>qO_3m67mD)FePu{#J{y^x#}w-fFJlo_8l z4wA-h;wYRSeRk6r-$N!LBB&K4F=*tAa5+4Qka7p}kpI8K#m)F4_UD+dJLU_YwS>+U z$i%uaI8Ra!v3-~)Tt}mNzNg(TIvS_B(IbLZ%#fwcqZ(SPa#5fBmw+$acSDYyCkg3J zA1oU?&n!ttqa)xql@#&?gXhU0t55ax<`JaFb&BA2u}Gd|I%QC!x!i|Qf4@&w`vb2R zil~#~&>7LE$Zu$5pBxmsrC<Q>^mb!zgO>(y~R3I4&kToBG~C7W~H1)nRDgxVCjErsN$^l?DNJ=6b+WFmuE;~+sRQ~domWLZ=JdheY+*85GL z6m^Nw0hemcx-4R~nOy*Hiq+QoWxuDjejD@KAd@}p+l2NfH1*eb{Y&_QH5;0J*si>X zuR~-bC!>n?jH4TW8&Jn_tLnJ%$zR*;)fQhQ;EgH4s?(?RsqIbGHh;h5AMmmfQ$q2D z)ape}tBqO|?vSbj>);@#Dg{4(Dk#5z2LHMK$?tn3cX5;`pHmjvY#cv_O|WbyJz_ucyF~gS6jW_urDNe zz123aHzbR(AnRZBdcTbMf_z57znGxlUrJCevlr94;q^8fvgp2xrZ(f%YIEA!92V_X uyR+Kj^@_3|sF%4d@591chA8&>;s!tqpP^P;|G+i+<1ZOBv&w0^==d*i{nOU~ literal 0 HcmV?d00001 diff --git a/dtkApi/search/__pycache__/JdGoodsReq.cpython-36.pyc b/dtkApi/search/__pycache__/JdGoodsReq.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7eed3dc7d99843c8859e095432c8b48781a57e8e GIT binary patch literal 2375 zcma)8OKcNI7+yc}uz^0Ls;5egR1R3;k>FFSstRwVszOBQ#RP4)J6mTH+q>-ArA9qC zKycjHj@vjS#HJ+FAt8mBsv#KL0f}>uJ^2VbYws!dp8C&@6V?H#U1`Sq|MS29Z~nD+ z-#+)>>o33Q?PQo&jOB5{doL_?KWvEcG02AO0b9`Sv)h<6400gnbp|;F`!$Epf!YQc zPkZFAc7}0lnkbbcj3%EmsX0^%ggmYD)ro& zh(O@Q0+BdsktiqMCgHV6loD@9$eds3L$1D1Snvyq>B?AqTwfTYF39nqctvOt(2G+b zqt84t;!|7IBu>pxQqRY5VcFXaJfkw#SSuXurdHI^NFP#NgJDH%rUM)i8MzxcGjRY? z(;qCF%JX`*s3*ttJ4=n?-Jb4lt+Wb~9^#}h4}`Y)yq;Zo8OtAh8M}=qZW!~~`h$Da z$*2&$EGfw91&{w}WY-$S6fy8{79z%(BrP|dxq+w0a3)n>egpwD;_Dy-wZ(~)o?kU? zW$?sCvjmFB3#Sz+=sGU?PYS#k%6dD}n6k#yTDdCpVYn#6r@t^f#R(m#ylVxLe9am#`d6N3vrG6^Z+SoUh>y>H! z_8qD$T@C>NEIp$60p#$nlUvpKMtrrAS-RlA2!$FrJ8(h1NcB`n3HNhB!K$jKf5GJ` zQu4LO2V_z}FaS7#G9B#N6(yWl1GAp*9D&O&F?3czf^tHNgu>qLlU!7VV{bPu+{e`! zfAFRw;lMj+dz`&+E{wVRI^P#ubc&Jdf*@f}T$34-0sF2~Sb?yCHDT_1O(NF1D(P?V`3!2Rd;@#Nu)mriyry)zd5Z>2qx}wLM`+ zemEWA{4J9U#s|KcZ@nAI9?E?c8#~%Of3k$rSL?ZT?O6`EUdn}BjaUL=$H{S=`P~a4 z;;ACeufQ>U0*(y~kfuI;1Q7!=Xv%c(k!mci)C*;O;wCKuO~2U=8Rn~X&R1xBD&bQR z-o)wGO2CTuo!T4I&-C;Xl|({7{9aI^=c97#*r!1n<0&IH)@8PFuGj>yR!RZh-EIRu zeT>Ie>o_M|ia`H)LT^8Ic zND@-P&Xo@!BK61!I^rjsBdWkD{4j3=Bjh2!ZLm(jQV+oPBQrvl4VL|yUD*%64n!y? z;Uas=F$kY$@Z#vNInJCq@3Gf9I9X&PN}%TC6u(N`^TPr^$`Y#9E^`VORBL-FuSs<% zG{c$$^dMuWDg?f}&nWvKf`2|e_1TadI=A zWaxFKhvjH(k6#F%6I7Tfsz9<)$=?db_MYv^hZaGLP`{_W*2%IVn7}MsbF*wvLXiM@ z-^;R>B3yu;D0{$+;v(C-WFv7}ws#2WfbA1lD*P*9I&Dsy(_!-ZJ0^nxx~j?RESMs)l#t literal 0 HcmV?d00001 diff --git a/dtkApi/search/__pycache__/ListHotWordsReq.cpython-36.pyc b/dtkApi/search/__pycache__/ListHotWordsReq.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..81d65b0886795c9d483b84d5a875d86a7141925b GIT binary patch literal 666 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 literal 0 HcmV?d00001 diff --git a/dtkApi/search/__pycache__/TbServiceReq.cpython-36.pyc b/dtkApi/search/__pycache__/TbServiceReq.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..62a3179f9bfeb23dd8636610951c1e2cf7005a06 GIT binary patch literal 2765 zcmb7GTW=Fb6kcDF*e0m(P^qX=g({GUL?90IrL8Jjgb-2{RRpP06luG7hs2HTHM?u1 zpsI4n#SXE9NkTBr1v?}m4M`kmAWmXqiJ!5LWoNznl=nXMjK>QuP9m^1vvWD~&3De6 zb7syRKJ5B3_s?&CI~nFJQ}we$`vMf{1XMiJ!SEK|>a+N*9aal-nc;1`eSqQZ$l7n~ zu<>>6OjCX6q=R8xdf!B8>amuXE^W-Y-lX58F9f+R)FwFFLjLPWbmHQmk=b#UR#tE% zZDd~V=3~ZAQeT^Qzn5=<$ZkGmOoWZd zz1@6N7G%!HN}LZ#yZK?*SldkEwK=u$#E9J2vJ<6I5Rb||tjNiTN*ph3Wc9U-HoAnj ziWQU|wiYP7qfKOSWSe496e{Hr{C+P5Q+GDCbRH&yqSr$cOt^(a32_o$eW6u(XTc|HNmV#NN0WN3mZtU<9Z`V)h4|7Q zI^Ioc!%x8DXmF{yyT+pg;NkcKwGbyRGuU782$>V*k3|_d5an9WRfwEgGI)7REsWPj zo0>E67ViKhck8+H)J5E_XU?5JN%?_}`{I@zwX`~Agom5=f;W{u0KS`(E()Qb5ODq^ z2tLFGoHdRzJ*?)FT7McxbJam1iy`!3Ts#Tb80eX*2TgG`Sz&nSY44fz0MVG>Z^QNh_Qygfm$6Brkf zkCVMZ;7WzES4RGy1y8Mhl@v1^#?wo9np_t2u7Es*2bYZgrFSul2Vbc>lW=hme~vv= zw^!bV`@q#9w4nhR8*k2*R)^`eKynu3w%i?@h?kxcSdy3e3plq}n(k9~3a46ITHR;i z|BW`ej^}1+fHqMB2M~f#LqV>0U&1tl-X+G>UPbkdEj>J_7H5pqH0QUVe zB;gHsd?6lP76iT=Xf>`uErS;ddUgPAGoo^0(Rh}GOby4Z=2CbjQZ`qa&z=(>L&jym zn}TVwC=FN9%@C4g59ymf8#FFJk-mlsF&!3oeOP%5yfUoh)zM|^u=90%{Q%QZ$2Y*c z!=W@@yWWn(Tad^A@AfhIdb32kXSw#%2UHCdGgF6d=LqEE4NVwcoZ zr?@=b$kW4;o&qF9&MzsAbga^A5UD8?8>|D<*d^q<@fRb01`PiF?$WoN!Cr_A(cdWq zQ2^kZCBCOQ*eiDnflglT`7!A2gqu(Fbaz%8<4mwuIRr+yiX=!;68efLMV@wy<%s3> z7ylEj5^HO!R~#%G;QWYX6&K6;1wP~>?M9Zp8RC3&Mm!8a;vrHUB^BXXRUIK+a+=4W zNcB)TEOv{_Rvv3>vMUWN%L^VrJxVn=1A0|FLbRHTs{qUR1XXc-PZ|C2Ie{h$*)5H> F{{ZiwxM%(~&BNRn6E|OFyqvdqF*unPQW%pb-N&#|^ zpg^LGP(T79Bnm95AQTJ!$Cd;eT)C%W_8g2ydb2xob8p|O?!&0_tM_U2@@Vwo$Z_3D(v78i zFHB@zD%Tyqelz_3bo}5J3-+mk|tRzkMq@1Mv0B$1i#enhGW z3jW+&zg3I7LBm(=S`^C==*wC(%W*epL}5)N%{%chkS^(bLC69dCz1|$IFGdKWoaR!h`VTfW#VN7AlVa#QUVqyfbnRA$PS)y3L zY?d6>T(&4SFq<`pJ(nYj1I%X2;mqZV;sUeTbGUPPqIke;jvU@xz9>F0n=^+$S0G9N z$mR-W(Bv+C2(*sNr6fBzHL)l;!#zJgr8p?H(CX=u<b&rzv=gJw84qKRG@=N1uNWNkdKhji0;P#4X;f7xjxA!wsshRN zMJyl{QmAGid#8vMq(B@^0nC3zY#>=#R9Q3+7qNrXNTRAi3V|XHkh}z{JR(SnIDyhD z8H%`p6qxvB?rIfNP??;OSd<%+Uyz!YSdgh(oRY0uP+5|ZpBDo$CWHa^HWN5QtfzvW)%wn2^K~k6bJz2^Ehk( literal 0 HcmV?d00001 diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..c0807aa --- /dev/null +++ b/setup.py @@ -0,0 +1,11 @@ +from setuptools import (setup, find_packages) +setup( + # 包名 + name="dtkApi", + # 版本 + version="1.0.1", + # github地址[我学习的样例地址] + url='https://gitee.com/dtk-developer/openapi-sdk-python.git', + # 需要包含的子包列表 + packages=find_packages() +) -- Gitee