python在命令行下使用google翻译(带语音)


Posted in Python onJanuary 16, 2014

说明

1. 使用google翻译服务获得翻译和语音;
2. 使用mplayer播放获得的声音文件,因此,如果要播放语音,请确保PATH中能够找到mplayer程序,如果没有mplayer,请将use_tts设置为False运行。即:
main(use_tts=False)
3. 退出程序,输入"x",回车。

#! /usr/bin/env python
#coding=utf-8
import requests

def translate(words):
    import re
    url = ("http://translate.google.cn/translate_a/t?"
    "client=t&hl=zh-CN&sl=en&tl=zh-CN&ie=UTF-8&oe=UTF-8&oc=1&otf=2&ssel=3&tsel=0&sc=1&q=%s")
    ret = requests.get(url % words)
    if ret.status_code == 200:
        RULE_TRANSLATE = re.compile('''([^\[\]]+?)\]\]''')
        match = RULE_TRANSLATE.search(ret.text)
        t, o, s, _ = match.group(1).split(u",")
        print u"译文:", t[1:-1]
        print u"发音:", s[1:-1]
        print ""
    else:
        raise Exception("Google翻译服务状态码异常。")
 
def tts(words):
    import subprocess
    url = "http://translate.google.cn/translate_tts?ie=UTF-8&q=%s&tl=en&total=1&idx=0&textlen=4&prev=input"
    ret = requests.get(url % words)
    if ret.status_code == 200:
        ext = ret.headers["content-type"].split("/")[1]
        filename = "tts.%s" % ext
        with open(filename, "wb") as f:
            f.write(ret.content)
        # 不显示mplayer的输出
        log_file = "./mplayer.log"
        with open(log_file, "w") as f:
            subprocess.call(["mplayer", filename], stdout=f, stderr=f)
    else:
        raise Exception("Google TTS服务状态码异常。")

def main(use_tts=True):
    while 1:
        #在window下raw_input不能直接提示中文,需要u"中文".encode("gbk")
        #为了与平台无关,这里直接提示"English:"
        words = raw_input("English:")
        if words == "x":
            break
        if use_tts:
            tts(words)
        translate(words)

if __name__ == "__main__":
    main(use_tts=True)
Python 相关文章推荐
Python装饰器使用示例及实际应用例子
Mar 06 Python
简单介绍Python中的try和finally和with方法
May 05 Python
Python使用Mechanize模块编写爬虫的要点解析
Mar 31 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
May 08 Python
用matplotlib画等高线图详解
Dec 14 Python
用Python实现大文本文件切割的方法
Jan 12 Python
Django学习之文件上传与下载
Oct 06 Python
python中return的返回和执行实例
Dec 24 Python
基于python实现判断字符串是否数字算法
Jul 10 Python
使用Python项目生成所有依赖包的清单方式
Jul 13 Python
快速解释如何使用pandas的inplace参数的使用
Jul 23 Python
numpy array找出符合条件的数并赋值的示例代码
Jun 01 Python
python支持断点续传的多线程下载示例
Jan 16 #Python
python获得图片base64编码示例
Jan 16 #Python
python练习程序批量修改文件名
Jan 16 #Python
python使用urllib模块开发的多线程豆瓣小站mp3下载器
Jan 16 #Python
python使用urllib模块和pyquery实现阿里巴巴排名查询
Jan 16 #Python
python3.3教程之模拟百度登陆代码分享
Jan 16 #Python
python解析发往本机的数据包示例 (解析数据包)
Jan 16 #Python
You might like
PHP入门经历和学习过程分享
2014/04/11 PHP
YII路径的用法总结
2014/07/09 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
2014/11/05 PHP
PHP实现HTTP断点续传的方法
2015/06/17 PHP
php使用crypt()函数进行加密
2017/06/08 PHP
php中try catch捕获异常实例详解
2020/08/06 PHP
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
javascript最基本的函数汇总
2015/06/25 Javascript
JavaScript实现网站访问次数统计代码
2015/08/12 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
angular2中Http请求原理与用法详解
2018/01/11 Javascript
解决循环中setTimeout执行顺序的问题
2018/06/20 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
详解vuex commit保存数据技巧
2018/12/25 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
Python编程入门之Hello World的三种实现方式
2015/11/13 Python
3分钟学会一个Python小技巧
2018/11/23 Python
python3学生名片管理v2.0版
2018/11/29 Python
Python帮你微信头像任意添加装饰别再@微信官方了
2019/09/25 Python
基于python实现从尾到头打印链表
2019/11/02 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
Python re正则表达式元字符分组()用法分享
2020/02/10 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
2020/03/24 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
农场厂长岗位职责
2013/12/28 职场文书
汽车销售顾问求职自荐信
2014/01/01 职场文书
文明市民先进事迹
2014/05/15 职场文书
小学“向国旗敬礼”网上签名寄语活动总结
2014/09/27 职场文书
客房服务员岗位职责
2015/02/09 职场文书
教育读书笔记
2015/07/02 职场文书
python3 hdf5文件 遍历代码
2021/05/19 Python
Mysql如何查看是否使用到索引
2022/12/24 MySQL