这正是应用程序编程接口(Application Programming Interface,API)的用处,它为不同的应用提供了友好方便的接口。不同开发者不同的架构,甚至不同的编程语言也没问题。这就实现了不同软件进行信息共享。
尽管不同的软件应用都有不同的API,但API却经常被理解成”网络应用API”,一般情况下,程序员通过http协议向API发起某种请求,API会用XML(可扩展标记语言,Extensible MarkuP Language)或者JsON((JavaScriptObject Notation,Js 对象简谱)格式返回响应的信息。但JsON目前是数据传输的主流选择。
下面我用百度翻译开放平台的API为例介绍API如何使用。
进群:548377875 可以获取小编精心准备的全套教程视频以及pdf呢!
百度一下就可以看到它的官网了,进入官网,登录百度账号。
百度翻译开放平台提供4种服务,通用翻译API/定制化翻译API/拍照翻译SDK/语音翻译SDK,选择通用翻译API>立即使用>填写一下相关信息,就可以使用平台提供的通用翻译了!
当你完成上述步骤后,平台会给你appID和密钥,假设,为了后来的编程方便。我们设你在平台得到的如下:
AppID=2018110856362537secretKey =BVEY239HCDSUH
我随便输入的,切勿当真,仅仅是演示。
按照教程,通用翻译API有httpS和http地址,我们就用httpS地址:
https://fanyi-API.baIDu.com/API/trans/vip/translate
使用POST或者GET方法传递以下字段,我使用的是GET方法。
其中q是url编码过的字符,python可提供url编码
from urllib.parse import quotew='蜀中无大将,廖化作先锋'q=quote(w)print(q)
得到这样的字符串:
%E8%9C%80%E4%B8%AD%E6%97%A0%E5%A4%A7%E5%B0%86%EF%BC%8C%E5%BB%96%E5%8C%96%E4%BD%9C%E5%85%88%E9%94%8B
From是翻译源语言,这里是中文,值为zh,目标语言to,翻译成英语,值为en
其他语言列表部分如下:
语言简写
名称
auto
自动检测
zh
中文
en
英语
yue
粤语
wyw
文言文
jp
日语
kor
韩语
fra
法语
spa
西班牙语
Salt是随机数,要求整型,可以使用random库的randint函数。Sign是签名,使用md5算法生成的32位签名,如下。
from random import randintfrom hashlib import md5salt = randint(32768,65536)myu = appID + w + str(salt) + secretKeym1 = md5()m1.update(myu.encode('utf-8'))sign = m1.hexdigest()
假定salt=43716,AppID=2018110856362537,SecrectKey=BVEY239HCDSUH,w='蜀中无大将,廖化作先锋',那么结果是:
myu=’2018110856362537蜀中无大将,廖化作先锋43716BVEY239HCDSUH’
sign='88803b93d8f72a1a0e3daecb202f59f9'
最后组装链接,使用get,那么完整的链接如下:
url = 'https://fanyi-API.baIDu.com/API/trans/vip/translate?from=zh&to=en&appID=20181023000223357&salt='+ str(salt) + '&q=' + urlq + '&sign=' + sign
最后要做的就是使用python的网络请求啦,和爬虫一样的方法。我直接放完整代码吧,如下:
from hashlib import md5from random import randintimport JsonappID = '201811085636253'secretKey = 'BVEY239HCDSUH 'w='蜀中无大将,廖化作先锋'q=quote(w)salt = randint(32768,65536)myu = appID + w + str(salt) + secretKeym1 = md5()m1.update(myu.encode('utf-8'))sign = m1.hexdigest()url = 'https://fanyi-API.baIDu.com/API/trans/vip/translate?from=zh&to=en&appID=20181023000223357&salt='+ str( salt) + '&q=' + q + '&sign=' + signa = urlopen(url)b = a.read()bb = b.decode('UTF-8')pyobj=Json.loads(bb)if "error_code" in pyobj: print( "error_code:"+pyobj["error_code"]+'error_msg:'+pyobj['error_msg'])else: dst = pyobj['trans_result'][0]['dst'] print(dst)
请改动appID和secretKey后再演示,得到
Thereare no generals in Shu and liao as pioneers.
值得注意的是,百度翻译开放平台规定:
2.qqbot
qqbot 是一个用 python 实现的、基于腾讯SmartQQ (网页qq)协议的 QQ 机器人框架,可运行在 linux 、 windows 和 Mac OSX 平台下。使用pip install qqbot安装
本项目 github 地址: https://github.com/pandolia/qqbot
其实qqoot挺简单的,如下:
from qqbot import QQBotSlot as qqbotslot,RunBot@qqbotslotdef onQQMessage(bot,contact,member,content): nr = str(content) fy='你在说:'+nr bot.SendTo(contact,fy)if __name__ == '__main__': RunBot()
这段代码运行,出现一个二维码,务必使用QQ小号扫描二维码,当你给机器人发消息的时候它的回复就是 你在说:+你发的消息,值得注意的是,机器人加QQ群出现的新消息机器人也会回复!
注意,上面注册的响应函数的函数名必须为“onQQMessage”,函数参数也必须和上面的一致!
3.结合
我们把翻译的程序改写封装成一个函数,再加入QQ机器人模块,如下
from urllib.parse import quotefrom urllib.request import urlopenfrom hashlib import md5from random import randintimport Jsonfrom qqbot import QQBotSlot as qqbotslot,RunBotimport redef ch2en(ch): "使用百度翻译API把中文翻译成英文" cha=re.sub('s','',ch) if len(cha)==0: return '请认真对待翻译,别发图片,空白等等' appID='你的appID' secretKey = '你的密钥' urlq=quote(ch,enCoding='UTF-8') salt = randint(32768,65536) myu=appID+ch+str(salt)+secretKey m1=md5() m1.update(myu.encode('utf-8')) sign=m1.hexdigest() url='https://fanyi-API.baIDu.com/API/trans/vip/translate?from=zh&to=en&appID=20181023000223357&salt='+str(salt)+'&q='+urlq+'&sign='+sign a=urlopen(url) b=a.read() bb=b.decode('UTF-8') pyobj = Json.loads(bb) if "error_code" in pyobj: return "error_code:"+pyobj["error_code"]+'error_msg:'+pyobj['error_msg'] else: dst = pyobj['trans_result'][0]['dst'] return dst@qqbotslotdef onQQMessage(bot,content): nr = str(content) fy=ch2en(nr) bot.SendTo(contact,fy)if __name__ == '__main__': RunBot()
再次提醒,运行前修改appID和密钥。
突然发现我做的这样的机器人比单纯的在网页上翻译好多了,一不小心又让你装了一个漂亮的逼,哈哈哈
而且这个也是一个学英语的好工具,我经常使用它翻译长难句。
最后,我放一个问题,做为使用API的一点心得:
如何把微信的零钱转到支付宝的余额上?
总结以上是内存溢出为你收集整理的啥年代了啊!谁还用翻译软件?我直接用Python自制的翻译机器人!全部内容,希望文章能够帮你解决啥年代了啊!谁还用翻译软件?我直接用Python自制的翻译机器人!所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)