淘宝客API的SDK下载

在淘宝开放平台中,进入应用以后,在左侧边栏中有一个“SDK下载”的菜单,进入后,可以选择下载各种编程语言的SDK,目前支持:Java、PHP、Python、.NET、Metadata、C、NodeJS。

具体用法参考淘宝客SDK的使用说明

python sdk使用前准备

使用淘宝客的Python SDK的时候要注意,如果用的是Python3,直接使用会遇到错误:

name 'long' is not defined

这是因为python3中用int取代了关键字long,淘宝客的python sdk中top/api/base.py还在使用long:

P_TIMESTAMP: str(long(time.time() * 1000)),

将long修改位int:

P_TIMESTAMP: str(int(time.time() * 1000)),

但是淘宝客API中还有其它python2的用法,一个一个修改太麻烦了,可以用python提供的2to3命令,将整个目录中的python2代码转换成python3:

$ 2to3 -w top
RefactoringTool: Skipping optional fixer: buffer
RefactoringTool: Skipping optional fixer: idioms
RefactoringTool: Skipping optional fixer: set_literal
RefactoringTool: Skipping optional fixer: ws_comma
RefactoringTool: No changes to top/__init__.py
...

转换之后还是会有一些错误,只能一个个修改:

Unicode-objects must be encoded before hashing

sign = hashlib.md5(parameters).hexdigest().upper()

修改为:

sign = hashlib.md5(parameters.encode('utf-8')).hexdigest().upper()

getsockaddrarg: AF_INET address must be tuple, not int

这是因为python3的http.client.HTTPConnection()的构造参数顺序发生了变化。

将代码:

if(self.__port == 443):
	connection = http.client.HTTPSConnection(self.__domain, self.__port, None, None, False, timeout)
else:
	connection = http.client.HTTPConnection(self.__domain, self.__port, False, timeout)

修改为:

if(self.__port == 443):
    connection = http.client.HTTPSConnection(host=self.__domain, port=self.__port, timeout=timeout)
else:
    connection = http.client.HTTPConnection(self.__domain, self.__port, timeout=timeout)