AsinSeedApi

不写注释的程序员-加密

将JAVA API接口 改写成 Python

JAVA

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils; import java.io.IOException;
import java.security.MessageDigest; public class AsinSeedApiTest {
private static final char[] HEX_CHAR = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
private static final String PARTNER_CODE = "xxx";
private static final String PARTNER_SECRET_KEY = "xxx-xxx-xxx-xxx"; private static String byteArrayToHexString(byte[] byteArray) {
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < byteArray.length; i++) {
int n = byteArray[i];
n = n < 0 ? n + 256 : n;
resultSb.append(HEX_CHAR[n / 16]).append(HEX_CHAR[n % 16]);
}
return resultSb.toString();
} private static String encode(String origin) {
String output = null;
try {
MessageDigest md = MessageDigest.getInstance("MD5");
output = byteArrayToHexString(md.digest(origin.getBytes("UTF-8")));
} catch (Throwable e) {
e.printStackTrace();
}
return null != output ? output.substring(0, 12) : "";
} public static void main(String[] args) {
String marketplace = "US";
String asin = "B017H39S5U";
String partner = PARTNER_CODE;
String qid = marketplace + "_" + asin + "_" + PARTNER_SECRET_KEY;
qid = encode(qid);
String urlStr = "https://www.asinseed.com/api/" + marketplace + "/" + asin + "/" + partner + "/" + qid;
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(urlStr);
try {
HttpResponse response = httpClient.execute(httpGet);
HttpEntity responseEntity = response.getEntity();
if (null != responseEntity) {
String responseJsonStr = EntityUtils.toString(responseEntity, "UTF-8");
JSONObject result = JSON.parseObject(responseJsonStr);
String code = result.getString("code");
if ("ok".equalsIgnoreCase(code)) {
JSONObject data = result.getJSONObject("data");
JSONArray keywords = data.getJSONArray("keywords");
//TODO your custom business logic
System.out.println(keywords.toJSONString());
} else {
String errMsg = result.get("message").toString();
//TODO handle the error msg from api
System.out.println("errorMs=>" + errMsg);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

Python

class AsinSeedApiTest:
HEX_CHAR = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']
PARTNER_CODE = PARTNER_CODE
PARTNER_SECRET_KEY = PARTNER_SECRET_KEY @classmethod
def byteArrayToHexString(cls, byteArray):
resultSb = ''
for n in byteArray:
n = n + 256 if n < 0 else n
resultSb += (cls.HEX_CHAR[n // 16])
resultSb += (cls.HEX_CHAR[n % 16])
return resultSb @classmethod
def encode(cls, origin):
m = hashlib.md5()
m.update(origin.encode('utf-8'))
output = m.hexdigest()
return output[0:12] if output else "" @classmethod
def main(cls, marketplace, asin):
marketplace = marketplace
asin = asin
partner = cls.PARTNER_CODE
qid = marketplace + "_" + asin.upper() + "_" + cls.PARTNER_SECRET_KEY # ASIN
qid = cls.encode(qid)
urlStr = "https://www.asinseed.com/api/" + marketplace + "/" + asin + "/" + partner + "/" + qid # ASIN url
keyWord_urlStr = "https://www.asinseed.com/api/" + marketplace + "/" + partner + "/" + qid + '?keyword=' + asin # 关键词 url return urlStr, keyWord_urlStr

将JAVA API接口 改写成 Python的更多相关文章

  1. 熟练掌握HDFS的Java API接口访问

    HDFS设计的主要目的是对海量数据进行存储,也就是说在其上能够存储很大量文件(可以存储TB级的文件).HDFS将这些文件分割之后,存储在不同的DataNode上, HDFS 提供了两种访问接口:She ...

  2. 掌握HDFS的Java API接口访问

    HDFS设计的主要目的是对海量数据进行存储,也就是说在其上能够存储很大量文件(可以存储TB级的文件).HDFS将这些文件分割之后,存储在不同的DataNode上, HDFS 提供了两种访问接口:She ...

  3. android框架Java API接口总注释/**@hide*/和internal API

    Android有两种类型的API是不能经由SDK访问的 l 第一种是位于com.android.internal包中的API我,位于frameworks/base/core/java/com/andr ...

  4. python使用zabbix的API接口

    一.实验环境 python3.6.6 zabbix 3.0.9 二.实验目的 了解Zabbix的API接口格式 通过python实现登陆zabbix服务,获得登陆token 通过python检索zab ...

  5. 利用Java API通过路径过滤上传多文件至HDFS

    在本地文件上传至HDFS过程中,很多情况下一个目录包含很多个文件,而我们需要对这些文件进行筛选,选出符合我们要求的文件,上传至HDFS.这时就需要我们用到文件模式. 在项目开始前,我们先掌握文件模式 ...

  6. SIP:用Riverbank的SIP创建C++库的Python模块(把自己的C++库包装成Python模块)

    我们发现PyQt做的Python版的PyQt是如此好用,如果想把自己的C++库包装成Python模块该如何实现呢? 这里介绍下用SIP包装C++库时值得参考的功能实现: 需要Python模块中实现C+ ...

  7. 没想到吧,Java开发 API接口可以不用写 Controller了

    本文案例收录在 https://github.com/chengxy-nds/Springboot-Notebook 大家好,我是小富~ 今天介绍我正在用的一款高效敏捷开发工具magic-api,顺便 ...

  8. Java 调用Restful API接口的几种方式--HTTPS

    摘要:最近有一个需求,为客户提供一些Restful API 接口,QA使用postman进行测试,但是postman的测试接口与java调用的相似但并不相同,于是想自己写一个程序去测试Restful ...

  9. 在Java API设计中,面向接口编程的思想,以及接口和工厂的关系

    现在的java API的设计中,提倡面向接口的编程,即在API的设计中,参数的传递和返回建议使用接口,而不是具体的实现类,如一个方法的输入参数类型应该使用Map接口,而不是HashMap或Hashta ...

随机推荐

  1. js 原始数据类型、引用数据类型

    js的数据类型划分方式为 原始数据类型和 引用数据类型 栈: 原始数据类型(Undefined,Null,Boolean,Number.String) 堆: 引用数据类型(对象.数组.函数) 两种类型 ...

  2. 中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂(上)

    前言 当下,正面临着近几年来的最严重的互联网寒冬,听得最多的一句话便是:相见于江湖~.缩减HC.裁员不绝于耳,大家都是人心惶惶,年前如此,年后想必肯定又是一场更为惨烈的江湖厮杀.但博主始终相信,寒冬之 ...

  3. Python之replace()方法失效

    1.背景 Titanic存活率预测案例: # 读取数据 df_train = pd.read_csv("./data/train.csv") df_train.head() OUT ...

  4. markdown的摘要测试

    123456789 1 123456789 2 123456789 3 123456789 4 123456789 5 123456789 6 粗体 123456 划线 123456 斜体 12345 ...

  5. [论文阅读] LCC-NLM(局部颜色校正, 非线性mask)

    [论文阅读] LCC-NLM(局部颜色校正, 非线性mask) 文章: Local color correction using non-linear masking 1. 算法原理 如下图所示为, ...

  6. Linux命令(六)之防火墙iptables的相关操作以及端口的开放

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  7. Linux从头学07:中断那么重要,它的本质到底是什么?

    作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...

  8. SSM集成FastJson

    FastJson Json数据格式回顾 什么是json JSON:(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript( ...

  9. Pikachu-Unsafe Filedownload模块

    一.概述 文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件名对应的文 ...

  10. NOIP 模拟 $14\; \text{影魔}$

    题解 \(by\;\;zj\varphi\) 不是原题 一道(对我来说)很需要技巧的题 对于颜色数如何处理 离线,将子树转化为 \(dfs\) 序,但这种做法无法处理深度 我们按照深度加点(可以通过 ...