“
2014/06/28修改.
修改小黄鸡模块, 小i就不改了, 没什么用。。。
”
新版小黄鸡模块(只写了个ask函数, teach还没写, 后面应该会继续修改。。)
#coding=utf-8
import json;
import urllib;
import urllib.request;
from urllib.parse import urlencode;
URL_SIMSIMI = "http://www.simsimi.com/talk.htm";
URL_ASKSIMSIMI = "http://www.simsimi.com/func/reqN?";
URL_TEACHSIMSIMI = "";
talkHeader = {
"Cookie":"simsimi_uid=53294991; simsimi_uid=53294991; isFirst=1; isFirst=1; sid=s%3AXcqIfaDZ5P4biUHi4Xw8TdFE.CYYochQc23%2B%2BvPjDw5HH4yg5MTN%2FSnBtskGXJHEX8f4; AWSELB=150F676708F2639057F41EA6CD9115064C58E864E4D5FE3F62AF683EB3CA54C1A44837308BAB86F4F48D2BA2A2B01B0AEA34FBA3D92BA7AB89083051C189504CF5589F0BF7; teach_btn_url=talk; teach_btn_url=talk; Filtering=0.0; Filtering=0.0; popup_ad_InMobi=1; popup_ad_InMobi=1; menuType=web; menuType=web; selected_nc=ch; selected_nc=ch; __utma=119922954.2134471962.1398783865.1403874641.1403877970.3; __utmb=119922954.23.9.1403880508342; __utmc=119922954; __utmz=119922954.1403874641.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided)",
"Referer":"http://www.simsimi.com/talk.htm",
"User-Agent":"Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19",
}
class Simsimi:
def __init__(self):
self._opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor());
def ask(self, q):
data = {
"lc":"ch",
"ft":"0.0",
"req":q,
"fl":"http://www.simsimi.com/talk.htm",
};
request = urllib.request.Request(URL_ASKSIMSIMI + urlencode(data), headers = talkHeader);
ret = json.loads(self._opener.open(request).read().decode("utf-8"));
if(ret["result"] == 200 and ret["sentence_link_id"] != 1):
return ret["sentence_resp"];
return None;
def teach(self, q, asw):
pass;
def main():
robot = Simsimi();
print(robot.ask("sb"));
if(__name__ == "__main__"):
main();
#----------------------------------------------------------------------------------(分割线, 以下内容已失效。。。)--------------------------------------------------------------------------------------------------
找了2个接口,,,用来做聊天机器人(后面应该会写一个贴吧自动回复的机器人。所以先弄下这个),,,有需要就拿去用吧。
小i机器人的。。。。(已失效);
# coding=gbk
import urllib;
import urllib.request;
import hashlib;
import random;
from urllib.parse import urlencode;
realm = "xiaoi.com";
menthod = "POST";
uri = "/robot/ask.do";
string = "abcdefghijklmnopqrstuvwxyz0123456789";
#请求头;
headers = {
"User-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36 LBBROWSER",
"Cache-Control": "no-cache",
"Pragma":"no-cache",
"Host":"nlp.xiaoi.com",
"Connection":"Keep-Alive",
"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With":"XMLHttpRequest",
"X-Auth":"",
};
#请求的问题;
data = {
"question":"",
"userId":"sen506",
"type":"0",
};
#生成指定位数的随机数;
def createRand(length):
rndStr = ""
for i in range(0, length):
rndStr += random.choice(string);
return rndStr;
#生成X-Auth请求头;
def createXAuth(appKey, secretKey):
nonce = createRand(40);
sha1 = hashlib.sha1();
sha1.update("{0}:{1}:{2}".format(appKey, realm, secretKey).encode("utf-8"))
ha1 = sha1.hexdigest();
sha2 = hashlib.sha1();
sha2.update("{0}:{1}".format(menthod, uri).encode("utf-8"));
ha2 = sha2.hexdigest();
sha3 = hashlib.sha1();
signature = sha3.update("{0}:{1}:{2}".format(ha1, nonce, ha2).encode("utf-8"));
signature = sha3.hexdigest();
return "app_key=\"{0}\",nonce=\"{1}\",signature=\"{2}\"".format(appKey, nonce, signature);
class xiaoi:
def __init__(self, appKey = "", secretKey = ""):
self.setAppKey(appKey);
self.setSecretKey(secretKey);
self._request = urllib.request.Request("http://nlp.xiaoi.com/robot/ask.do", headers);
def ask(self, qs):
self._request.headers["X-Auth"] = createXAuth(self._appKey, self._secretKey);
data["question"] = qs;
try:
return urllib.request.urlopen(self._request, urlencode(data).encode("utf-8")).read().decode("utf-8");
except:
return "Error";
def setAppKey(self, appKey):
self._appKey = appKey;
def setSecretKey(self, secretKey):
self._secretKey = secretKey;
def main():
robot = xiaoi("", "");
for i in range(1, 100):
print("问:", end = "");
question = input();
print("答:" + robot.ask(question));
if __name__ == "__main__":
main();
main函数中的xiaoi("", "")引号里面需要传入2个参数,一个是appKey,另一个是secretKey,,这2个注册一个帐号就有了。。地址 小i智能云平台
效果图。。
个人感觉小i机器人有点弱。。。。。。。
小黄鸡的。。。。(这个是网页版的。。收费的api实在用不起。。。)(已失效)
# -*- coding: gbk -*-
import urllib;
import urllib.request;
import json;
from urllib.parse import urlencode;
# 请求头
simsimiHeaders = {
"Connection":"keep-alive",
"Content-Type":"application/json; charset=utf-8",
"Host":"www.simsimi.com",
"Referer":"",
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36 LBBROWSER",
"X-Requested-With":"XMLHttpRequest",
};
# 调教内容
data = {
"req":"",
"resp":"",
"lc":"ch"
};
class simsimiWeb:
def __init__(self):
self.setOpener();
def ask(self, qs):
if(not qs.startswith("teach") and not qs.endswith("teach")):
return self._ask(qs);
else:
return self._teach(qs);
def _ask(self, qs):
self._setType("ask");
request = urllib.request.Request("http://www.simsimi.com/func/req?{0}&lc=ch&ft=0.0".format(urlencode({"msg":qs})), headers = simsimiHeaders);
result = json.loads(urllib.request.urlopen(request).read().decode("utf-8"));
if(result["result"] == 100):
return result["response"];
elif(result["result"] == 404):
return """
这是SimSimi不懂的话! 你可以教我哦.
example:
teach|问题|回答|teach
""";
else:
print(result);
return "Error";
def _teach(self, word):
string, qs, asw, string = word.split("|");
if(string == "" or qs == "" or asw == ""):
return "格式错误,或者问题、回答为空!";
self._setType("teach");
request = urllib.request.Request("http://www.simsimi.com/func/teach", headers = simsimiHeaders);
data["req"] = qs;
data["resp"] = asw;
result = json.loads(urllib.request.urlopen(request, json.dumps(data).encode("utf-8")).read().decode("utf-8"));
if(result["result"] == 200):
return result["msg"];
else:
print(result);
return "教的过程中出现错误。。。";
def _setType(self, type):
if(type == "ask"):
simsimiHeaders["Referer"] = "http://www.simsimi.com/talk.htm";
elif(type == "teach"):
simsimiHeaders["Referer"] = "http://www.simsimi.com/teach.htm";
def setOpener(self):
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor());
urllib.request.install_opener(opener);
def main():
simsimiRobot = simsimiWeb();
for i in range(0, 1000):
print("问:", end = "");
question = input();
print("答:" + simsimiRobot.ask(question));
if(__name__ == "__main__"):
main();
效果图。。(带调教功能。。)