想法:有的时候,想开始一个项目,但是在给项目起一个合适的英文名的时候突然被英语词汇量拦住了,怎么办?那就打开浏览器搜个翻译软件查询咯,但是这样过程略显繁琐,想着自己写个小脚本,要用的时候直接命令行敲就行了。也不用再打开一个浏览器那么多步骤了。说干就干。
设计:
运行在命令行如这种形式: python3 translate.py 源 目的
运用的包
requests: 来构造访问请求
hashlib: 百度翻译api接口要求每次翻译都带有一个md5加密后的签名
sys: 用来获取命令行参数。
使用方法:
python3 translate.py query result # 将query翻译成result指定的语言.
python3 translate.py -h # 获取帮助文档
源代码:
import requests
import hashlib
import sys
def main():
"""
param1:查询字符,为自动判断
param2:目的字符,可选参数有
zh:中文
en:英文
yue:粤语
wyw:文言文
"""
# 查看帮助文档
if sys.argv[1] == "-h":
print(main.__doc__)
else:
q = sys.argv[1]
From = "auto"
to = sys.argv[2]
appid = 20180922000210716
salt = 15010110083
sign = join(appid, q, salt)
url1 = "http://api.fanyi.baidu.com/api/trans/vip/translate?q={}&from={}&to={}&appid={}&salt={}&sign={}".\
format(q, From, to, appid, salt, sign)
result_all = requests.get(url1).json()
result_dst = result_all["trans_result"][0]["dst"]
print(result_dst)
def join(appid, q, salt):
"""将一些列必备的参数拼接到一起,并进行md5加密"""
appid = appid
q = q
salt = salt
pwd = "wPXi4FtJeSwIK_QeRZxW"
str1 = str(appid) + q + str(salt) + pwd
hash = hashlib.md5()
hash.update(str1.encode("utf-8"))
return hash.hexdigest()
if __name__ == '__main__':
main()
大概花了20分钟写完,没什么难度,算是夯实了下基础吧,也增加了学习的趣味性,本来只是打算做中英翻译脚本,后来发现百度翻译api还支持文言文,粤语,就都加了进去,别说,还挺有意思。就是机翻的英语还是那么醉人。