一、个人需求

由于一直用Linux系统,对于词典的支持特别不好,对于我这英语渣渣的人来说,当看英文文档就一直卡壳,之前用惯了有道词典,感觉很不错,虽然有网页版的但是对于全站英文的网页来说并不支持。索性自己实现一个,基于Python编写的小工具实现有道词典,同时还可以将不认识的生词写入生词本中(xml格式),然后定期批量导入有道词典、沪江英语、金山词霸等。需要申请有道api

二、代码

由于程序过于简单就不再分析了,一些功能还尚在完善中。代码如下:

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # @Date : 2014-04-03 21:12:16
  4. # @Function: 有道翻译命令行版
  5. # @Author : BeginMan
  6. import os
  7. import sys
  8. import urllib
  9. import urllib2
  10. reload(sys)
  11. sys.setdefaultencoding("utf-8")
  12. import simplejson as json
  13. import platform
  14. import datetime
  15. API_KEY = '******'
  16. KEYFORM = '******'
  17. def GetTranslate(txt):
  18. url = 'http://fanyi.youdao.com/openapi.do'
  19. data = {
  20. 'keyfrom': KEYFORM,
  21. 'key': API_KEY,
  22. 'type': 'data',
  23. 'doctype': 'json',
  24. 'version': 1.1,
  25. 'q': txt
  26. }
  27. data = urllib.urlencode(data)
  28. url = url+'?'+data
  29. req = urllib2.Request(url)
  30. response = urllib2.urlopen(req)
  31. result = json.loads(response.read())
  32. return result
  33. def Sjson(json_data):
  34. query = json_data.get('query','') # 查询的文本
  35. translation = json_data.get('translation','') # 翻译
  36. basic = json_data.get('basic','') # basic 列表
  37. sequence = json_data.get('web',[]) # 短语列表
  38. phonetic,explains_txt,seq_txt,log_word_explains = '','','',''
  39. # 更多释义
  40. if basic:
  41. phonetic = basic.get('phonetic','') # 音标
  42. explains = basic.get('explains',[]) # 更多释义 列表
  43. for obj in explains:
  44. explains_txt += obj+'\n'
  45. log_word_explains += obj+','
  46. # 句子解析
  47. if sequence:
  48. for obj in sequence:
  49. seq_txt += obj['key']+'\n'
  50. values = ''
  51. for i in obj['value']:
  52. values += i+','
  53. seq_txt += values+'\n'
  54. print_format = '*'*40+'\n'
  55. print_format += u'查询对象: %s [%s]\n' %(query,phonetic)
  56. print_format += explains_txt
  57. print_format += '-'*20+'\n'+seq_txt
  58. print_format += '*'*40+'\n'
  59. print print_format
  60. choices = raw_input(u'是否写入单词本,回复(y/n):')
  61. if choices in ['y','Y']:
  62. filepath = r'/home/beginman/pyword/%s.xml' %datetime.date.today()
  63. if (platform.system()).lower() == 'windows':
  64. filepath = r'E:\pyword\%s.xml' %datetime.date.today()
  65. fp = open(filepath,'a+')
  66. file = fp.readlines()
  67. if not file:
  68. fp.write('<wordbook>\n')
  69. fp.write(u""" <item>\n <word>%s</word>\n <trans><![CDATA[%s]]></trans>\n <phonetic><![CDATA[[%s]]]></phonetic>\n <tags>%s</tags>\n <progress>1</progress>\n </item>\n\n""" %(query,log_word_explains,phonetic,datetime.date.today()))
  70. fp.close()
  71. print u'写入成功.'
  72. def main():
  73. while True:
  74. txt = raw_input(u'请输入要查询的文本:\n')
  75. if txt:
  76. Sjson(GetTranslate(txt))
  77. if __name__ == '__main__':
  78. main()

三、效果图

Python 实现有道翻译命令行版的更多相关文章

  1. Python安装后在CMD命令行下出现“应用程序无法启动.............”问题

    问题存在之一:系统是刚刚重做的精简版服务器系统(阉割版) AN就是在阿里云上刚开的Windows Server 2008 系统上碰到的  吓尿了都 症状:            正常安装python环 ...

  2. Shell终端收听音乐--网易云音乐命令行版

    Musicbox:网易云音乐命令行版本 高品质网易云音乐命令行版本,简洁优雅,丝般顺滑,基于Python编写. 这款命令行的客户端使用 Python 构建,以 mpg123 作为播放后端: Vim 式 ...

  3. appium桌面版和命令行版的安装

    一.appium桌面版: 启动很慢,一般用于元素定位 Appium-Desktop官方下载地址:https://github.com/appium/appium-desktop/releases/ ( ...

  4. 安装appium桌面版和命令行版

    一 桌面版(打开很慢,常用于辅助元素定位) 1.官网下载window版本: 2.直接点击紫色图标即可打开   3.启动server 二  命令行版(打开很快,常用于执行脚本) 1.jdk 安装jdk并 ...

  5. sublime将python的运行结果在命令行显示

    sublime将python的运行结果在命令行显示 为什么这么折腾? 因为每次查看输出结果都要上下拖动窗口,很烦. 将build system修改为 { "cmd": [" ...

  6. Windows下安装appium桌面版和命令行版

    安装appium桌面版和命令行版   一 桌面版(打开很慢,常用于辅助元素定位) 1.官网下载window版本:  github search appium desktop download late ...

  7. GitBook制作电子书详细教程(命令行版)

    GitBook 是一款基于 Node.js 开发的开源的工具,可以通过命令行的方式创建电子书项目,再使用 MarkDown 编写电子书内容,然后生成 PDF.ePub.mobi 格式的电子书,或生成一 ...

  8. [Python] 使用有道翻译API

    Python 使用youdao (有道翻译)API 想写一个给自己记录背单词状况的软件,需要获取英文单词的中文释义(基本功能).考虑使用有道翻译的API实现获取英文单词的中文释义的方法. 获取API_ ...

  9. 【转】Python实现修改Windows CMD命令行输出颜色(完全解析)

    用Python写命令行程序的时候,单一的输出颜色太单调.其实我们可以加些色彩,比如用红色表示警告,绿色表示结果正常等.网上也有几篇类似的帖子,但是没有把问题讲清楚,贴的代码也不是太清晰.这里,对Win ...

随机推荐

  1. GATK使用说明(一)

    1. 官方网址 https://software.broadinstitute.org/gatk/ 2. 下载Latest version: 3.7 3. FileZilla 上传至服务器,解压 ta ...

  2. Adding AirDrop File Sharing Feature to Your iOS Apps

    http://www.appcoda.com/ios7-airdrop-programming-tutorial/ Adding AirDrop File Sharing Feature to You ...

  3. js中json对象的深拷贝

    /** * 对象深拷贝 * @param obj */ function deepCopy(obj) { var txt=JSON.stringify(obj); return JSON.parse( ...

  4. linux下如何查找需要的文件后并删除

    1.首先查找指定目录下的文件,默认为当前目录 使用命令:find . -name 'a.txt' 会得到当前目录下所有包括子孙目录下的所有后缀为txt的文件 2.查找后删除 使用命令:find . - ...

  5. CCF 201612-1 最大波动 (水题)

    问题描述 小明正在利用股票的波动程度来研究股票.小明拿到了一只股票每天收盘时的价格,他想知道,这只股票连续几天的最大波动值是多少,即在这几天中某天收盘价格与前一天收盘价格之差的绝对值最大是多少. 输入 ...

  6. submit(提交)按钮

    为form添加一个submit(提交)按钮,点击这个按钮,表单中的数据将会被发送到通过action属性指定的地址上. 下面是submit按钮的例子: <button type="sub ...

  7. Poj-1157-LITTLE SHOP OF FLOWERS

    题意为从每行取一瓶花,每瓶花都有自己的审美价值 第 i+1 行取的花位于第 i 行的右下方 求最大审美价值 dp[i][j]:取到第 i 行,第 j 列时所获得的最大审美价值 动态转移方程:dp[i] ...

  8. RabbitMq基本使用

    1.新建一个vhost : rabbitmqctl add_vhost test 2.新建一个用户: rabbitmqctl add_user news news 3.对这个news用户增加test ...

  9. 64位Linux安装32位向日葵

    查看linux系统版本信息如下,可以看出系统为64位. [root@localhost bin]# uname -aLinux localhost.localdomain 3.10.0-327.3.1 ...

  10. MySQL5.6 报错1067

    http://www.cnblogs.com/lixiaolun/p/5303687.html