设为首页 收藏本站
查看: 2963|回复: 0

[经验分享] 用python实现有道翻译,配合Goldendict显示

[复制链接]

尚未签到

发表于 2015-4-23 07:04:33 | 显示全部楼层 |阅读模式
  先上效果图(划词翻译):
DSC0000.png
  代码:



  1 #!/usr/bin/env python
  2 #coding:utf-8
  3
  4 import json
  5 from urllib import urlopen
  6 import sys
  7 reload(sys)                      #要reload一次sys才能使用setdefaultencoding函数
  8
  9 sys.setdefaultencoding('utf-8')  #要将系统默认字符编码设置为utf-8,在Goldendict才能正常输出
10
11 html = """
12
13
14 function playSound(){var ky = document.getElementById("key");var word = ky.childNodes[0].nodeValue;var api = "http://dict.youdao.com/dictvoice?audio=" + encodeURIComponent(word);var ado = document.getElementById("media");try{ado.ended = true;ado.setAttribute("src",api);ado.load();ado.play();return false;}catch(err){alert(err.description);return false;}}
15
16
17
18       div.block {
19       border:1px solid #BEBEBE;
20       background:#F0F0F0;
21       margin-left:20px;
22       border-radius: 5px;
23       }
24       div.name {
25       margin-top:10px;
26       margin-bottom:5px;
27       margin-left:20px;
28       font-size:13px;
29       font-weight:bold;
30       }
31       div.item {
32       padding:5px;
33       font-size:12px;
34       margin: 0px 10px 0px 10px;
35       }
36       #web {
37       border-style: none none solid none;
38       border-color: #BEBEBE;
39       border-bottom-width: 1px;
40       }
41     
42     
43       查询:
44      
45        %s
46      
47       有道翻译:
48      
49     %s
50      
51       有道词典-基本词典:
52      
53     %s
54      
55       有道词典-网络释义:
56      
57        %s
58      
59       更多结果:
60      
61        %s
62      
63     
64
65
66 """
67
68 errorHtml = """
69
70
71 %
72
73
74 """
75
76 errorResult = {'0':'', '20':'要翻译的文本过长', '30':'无法进行有效的翻译',
77               '40':'不支持的语言类型', '50':'无效的key'}
78
79 def printHtml(errorCode, query, translation, basic, web):
80     """打印html"""
81     if errorCode != 0:
82         print errorHtml % errorResult[errorCode]
83         return
84     item = '%s'
85     #有道翻译
86     q = item % ('"%s"' % query)
87     trans = ''
88     for i in translation:
89         trans += item % ('"%s"' % i)
90
91     #有道词典
92     key = ''
93     if basic:
94         key += '%s' % (query + ' ')
95         if 'phonetic' in basic.keys():
96             key += '[%s]' % basic['phonetic']
97             key += 'sound'
98         key = item % key
99         if 'explains' in basic.keys():
100             #判断查询的词是不是中文
101             isChinese = False
102             for c in query:
103                 if ord(c) >= 0x4e00 and ord(c)  1:
119             for i in range(len(web)-1):
120                 webdict += webitem % ('id="web"', web['key'], ', '.join(web['value']))
121         webdict += webitem % ('', web[-1]['key'], ', '.join(web[-1]['value']))
122
123     if not key:
124         key = item % '对不起,没有结果'
125     if not webdict:
126         webdict = item % '对不起,没有结果'
127     #更多搜索
128     moreSearch = '通过Bing词典搜索'
130     moreSearch += '通过iciba词典搜索'
132     moreSearch += '通过百度搜索'
134     moreSearch += '通过Google搜索'
136
137     print html % (q, trans, key, webdict, moreSearch)
138
139 def getData(string):
140     data = json.loads(string)
141     errorCode = data['errorCode']
142     query = data['query']
143     translation = data['translation']
144     basic = {}
145     if 'basic' in data.keys():
146         basic = data['basic']
147     web = []
148     if 'web' in data.keys():
149         web = data['web']
150     
151     printHtml(errorCode, query, translation, basic, web)
152
153 def searchWord(word):
154     url = r'http://fanyi.youdao.com/openapi.do?keyfrom=&key=&type=data&doctype=json&version=1.1&q=' + word
155     f = urlopen(url)
156     jsonStr = f.read()
157     getData(jsonStr)
158
159 if __name__ == '__main__':
160     searchWord(sys.argv[1])
  后记:


  • 一开始我是申请返回有道翻译的xml文件的,然后发现json文件体积比xml文件小多了,而且python更方便读取解析json文件。
  • 最痛苦就是设计web的显示界面,花了一晚时间上w3cschool学习html和css。
  • 发声部分是学javascript的朋友帮我写的。
  • 这是我第三个版本的代码,写多了,领悟也多了,主要是终于意识到字符串格式化的好处。一开始用+来连接两个字符串使得可读性低~~,有时使得html代码错乱。
  • 其实html代码可以写成一个独立的文件,由pyfanyi.py读入,这样更加好,编辑html文件也更容易。
  • 在ubuntu下用自己写的翻译软件看英文好有感觉,呵呵。
  使用:
  安装Goldendict,ubuntu可以在软件中心安装。
  把pyfanyi.py复制到/usr/bin文件夹里
  在编辑->Dictionaries->Pragrams里添加一个程序,名字填 pyfanyi,Type选Html,命令填pyfanyi.py %GDWORD%

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-59749-1-1.html 上篇帖子: 使用python selenium进行自动化functional test 下篇帖子: python类库31[正则表达式]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表