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 httplib,smtplib使用方法
Sep 06 Python
python使用pycharm环境调用opencv库
Feb 11 Python
python使用正则表达式来获取文件名的前缀方法
Oct 21 Python
Django使用 Bootstrap 样式修改书籍列表过程解析
Aug 09 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
Oct 14 Python
基于python实现计算且附带进度条代码实例
Mar 31 Python
python 瀑布线指标编写实例
Jun 03 Python
Python文件操作模拟用户登陆代码实例
Jun 09 Python
使用keras时input_shape的维度表示问题说明
Jun 29 Python
python中字典增加和删除使用方法
Sep 30 Python
python 爬取吉首大学网站成绩单
Jun 02 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
Jun 13 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.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
php购物网站支付paypal使用方法
2010/11/28 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
Javascript技术技巧大全(五)
2007/01/22 Javascript
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
javascript应用:Iframe自适应其加载的内容高度
2007/04/10 Javascript
如何做到打开一个页面,过几分钟自动转到另一页面
2007/04/20 Javascript
checkbox 复选框不能为空
2009/07/11 Javascript
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
JavaScript全排列的六种算法 具体实现
2013/06/29 Javascript
jQuery使用post方法提交数据实例
2015/03/25 Javascript
整理Javascript函数学习笔记
2015/12/01 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
ES6与CommonJS中的模块处理的区别
2018/06/13 Javascript
详解JSON和JSONP劫持以及解决方法
2019/03/08 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
JavaScript链式调用原理与实现方法详解
2020/05/16 Javascript
javascript前端实现多视频上传
2020/12/13 Javascript
python 全局变量的import机制介绍
2017/09/07 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
2019/01/15 Python
python 堆和优先队列的使用详解
2019/03/05 Python
使用django的ORM框架按月统计近一年内的数据方法
2019/07/18 Python
pycharm解决关闭flask后依旧可以访问服务的问题
2020/04/03 Python
Python下载网易云歌单歌曲的示例代码
2020/08/12 Python
html5响应式开发自动计算fontSize的方法
2020/01/13 HTML / CSS
毕业生医学检验求职信
2013/10/16 职场文书
应届护士求职信范文
2014/01/26 职场文书
年度献血先进个人事迹材料
2014/02/14 职场文书
大学生学习2014全国两会心得体会
2014/03/13 职场文书
诚信考试倡议书
2014/04/15 职场文书
医学生求职信
2014/07/01 职场文书
大学生作弊检讨书
2014/09/11 职场文书
浅谈Python numpy创建空数组的问题
2021/05/25 Python
一些让Python代码简洁的实用技巧总结
2021/08/23 Python