一、个人需求

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

二、代码

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

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2014-04-03 21:12:16
# @Function: 有道翻译命令行版
# @Author  : BeginMan

import os
import sys
import urllib
import urllib2
reload(sys)
sys.setdefaultencoding("utf-8")
import simplejson as json
import platform
import datetime

API_KEY = '******'
KEYFORM = '******'

def GetTranslate(txt):
    url = 'http://fanyi.youdao.com/openapi.do'
    data = {
    'keyfrom': KEYFORM,
    'key': API_KEY,
    'type': 'data',
    'doctype': 'json',
    'version': 1.1,
    'q': txt
    }
    data = urllib.urlencode(data)
    url = url+'?'+data
    req = urllib2.Request(url)
    response = urllib2.urlopen(req)
    result = json.loads(response.read())
    return result

def Sjson(json_data):
    query = json_data.get('query','')               # 查询的文本
    translation = json_data.get('translation','')   # 翻译
    basic = json_data.get('basic','')               # basic 列表
    sequence = json_data.get('web',[])              # 短语列表
    phonetic,explains_txt,seq_txt,log_word_explains = '','','',''

    # 更多释义
    if basic:
        phonetic = basic.get('phonetic','')         # 音标
        explains = basic.get('explains',[])         # 更多释义 列表
        for obj in explains:
            explains_txt += obj+'\n'
            log_word_explains += obj+','
    # 句子解析
    if sequence:
        for obj in sequence:
            seq_txt += obj['key']+'\n'
            values = ''
            for i in obj['value']:
                values += i+','
            seq_txt += values+'\n'

    print_format = '*'*40+'\n'
    print_format += u'查询对象:  %s [%s]\n' %(query,phonetic)
    print_format += explains_txt
    print_format += '-'*20+'\n'+seq_txt
    print_format += '*'*40+'\n'
    print print_format
    choices = raw_input(u'是否写入单词本,回复(y/n):')
    if choices in ['y','Y']:
        filepath = r'/home/beginman/pyword/%s.xml' %datetime.date.today()
        if (platform.system()).lower() == 'windows':
            filepath = r'E:\pyword\%s.xml' %datetime.date.today()
        fp = open(filepath,'a+')
        file = fp.readlines()
        if not file:
            fp.write('<wordbook>\n')
            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()))
        fp.close()
        print u'写入成功.'

def main():
    while True:
        txt = raw_input(u'请输入要查询的文本:\n')
        if txt:
            Sjson(GetTranslate(txt))

if __name__ == '__main__':
    main()

三、效果图

最新文章

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-Web打印
  2. Discuz对不起,您安装的不是正版应用的解决办法
  3. kernel/printk.c
  4. 【翻译十二】java-并发之活性
  5. 第三章 深入 ZAB 协议
  6. HiveQ与传统SQL差异
  7. 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇03:暂停游戏》
  8. cf C. Counting Kangaroos is Fun
  9. 中国科学院信息project研究所 第四研究室实习生/应届生招聘
  10. helm 持久化部署ingres
  11. [Swift]LeetCode952. 按公因数计算最大组件大小 | Largest Component Size by Common Factor
  12. 基于for循环的呼吸灯
  13. MySQL更改命令行默认分隔符
  14. Spark1.0.0 源码编译和部署包生成
  15. HashMap、Hashtable、ConcurrentHashMap面试总结
  16. sql查询月的数据
  17. MOT北京站 | 卓越研发之路:亿万级云端架构演进
  18. nessus无法访问https://localhost:8834/#/,解决方法。
  19. Server Library [Apache Tomcat 7.0] unbound解决方案
  20. 在 ASP.NET CORE 中使用 SESSION (转载)

热门文章

  1. coreseek实战(三):全文搜索在php中应用(使用api接口)
  2. POJ 2983 Is the Information Reliable? 差分约束
  3. VS经常报错的link error 2019
  4. [linux]linux普通用户安装rpm软件
  5. HDU 1885 Key Task (BFS + 状态压缩)
  6. MySQL 半同步复制
  7. Linq to sql 语法方法示例
  8. [转] 基于ArcGISServer实现活动地图标注
  9. Linux中vi、vim命令大全
  10. Dapper试用