html代码翻译_20行代码手撸一个命令行英汉翻译工具

fe235b8abda185c46dc63562066d862d.png

经常碰到不认识的英文单词就去有道字典网页去查查看,每次的过程都是“打开有道网页->输入单词->查看结果”,这个过程有点儿繁琐。可是一直不厌其烦的这样重复着,却不想解决一下。。。直到在微博上面看到有个人利用有道翻译API做了个命令行下面的小工具。可是他是用ruby写的,对于Python空来说,这怎么可以呢,于是自己写一个吧,很简单的。

有道翻译API

http://fanyi.youdao.com/openapi?path=data-mode在这里简单申请一个应用即可。因为这个API有每小时1000次的使用限制,如果都使用我的key就会出现使用次数超限的情况。可以自己申请一个以满足自己的需求。

API使用很简单,传几个参数做一个http请求,返回json格式的结果。

Python实现

具体实现可以看代码:https://github.com/veelion/tt

Python里面做http请求的库很多,最流行和简便的是requests,最开始我也选择了该库。写完运行的时候发现,总是要迟钝一会儿才会出结果。怀疑是requests库内部加载的东西太多,于是换urllib2的urlopen。

Python 2.7下叫urllib2,到了Python 3下面就没有该包了,原来3把它放到urllib.request里面去了,为了让这个小工具同时在2和3下面运行,于是有了这样的代码:

try:    # For Python 3    from urllib.request import urlopen    from urllib.request import quoteexcept ImportError:    # For Python 2    from urllib2 import urlopen    from urllib import quote

选好http库就写一个函数来做翻译工作:

def trans(q):    print('translating...')    url = ('http://fanyi.youdao.com/openapi.do?'           'keyfrom=%s&key=%s&type=data&'           'doctype=json&version=1.1&'           'q=%s') % (YOUDAO_KEYFROM, YOUDAO_KEY, quote(q))    try:        r = urlopen(url)        html = r.read()        data = json.loads(html)        if data['errorCode'] != 0:            print(html)            return        print(BRO)  # 设置终端字体颜色        print("================================")        print(u"%s -> %s" % (data['query'], ','.join(data['translation'])))        if 'basic' in data:            if 'uk-phonetic' in data['basic']:                print(u"英式发音: %s" % data['basic']['uk-phonetic'])                print(u"美式发音: %s" % data['basic']['us-phonetic'])            for e in data['basic']['explains']:                print(u"%s" % e)        if 'web' in data:            print("")            for e in data['web']:                print(u"%s -> %s" % (e['key'], ','.join(e['value'])))        print("================================")        print(NOR)  # 恢复终端字体颜色    except:        traceback.print_exc()

最后,程序从命令行参数得到要被翻译的词,调用翻译函数即可:

if __name__ == '__main__':    from sys import argv    if len(argv) > 1:        q = argv[1]        trans(q)

以上就是实现翻译小工具的全部过程,很适合初学python的练手实现一下。

安装和使用

上面介绍了翻译小工具的实现过程,如果你只是想使用的话,我已把它发布到pypi上了,你只需使用pip命令安装即可(linux安装):

sudo pip install terminaltranslator

安装程序会在/usr/local/bin/下面生成t和tt两个简洁命令工调用。

windowns用户安装:

pip install terminaltranslator

安装程序会在python的根目录Scripts里生成t.exe和tt.exe 。

使用如下:

e1b1f0c1a15e4c54e19adff97162cf39.png

8e1bdec71f0eb7d37c2cef98ea9e23e0.png

enjoy! 下次说说如何把自己的python代码放到pypi上面以便用pip安装。

以下展示部分源码,需要完整版的请下载文件 <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>Document</title> <style> *{margin:0;padding:0;list-style:none} body{background:#ccc;} .wrap{margin:100px auto;width:900px;height:300px;box-shadow:0 0 4px #434343;background:#fff;padding:20px;border-radius:10px;} .wrap .language{position:relative;width:100px;height:30px;padding:0 30px;margin:20px;text-align:center;line-height:30px;border:1px solid #434343;cursor:pointer;} .wrap .language .languages{position:absolute;top:30px;left:-1px;width:354px;height:auto;border:1px solid #434343;display:none;background:#fff;color:#fff;line-height:40px} .wrap .language .languages ul li{float:left;width:78px;height:40px;margin:4px; border:1px dashed #ccc;background:#368;} .wrap .input, .wrap .show{width:430px;height:150px;float:left;background:#fff; color:#000;margin:10px;box-shadow:0 0 4px #222;line-height:40px;font-size:20px;text-indent:10px;color:#333;font-family:'微软雅黑';} .wrap .input textarea{z-index:3;height:100%;width:400px;border:0;resize:none;outline:0;color:#333;font-family:'微软雅黑';margin:0;padding:0;line-height:40px;font-size:20px;text-indent:10px;} .wrap span.btn{width:140px;height:30px;float:right;margin:10px;line-height:30px;text-align:center;background:#368;box-shadow:0 0 4px #ccc;border-radius:5px;color:#fff;cursor:pointer;} </style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值