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之编写类之四再论继承
Oct 11 Python
初步解析Python下的多进程编程
Apr 28 Python
在Python中使用全局日志时需要注意的问题
May 06 Python
Python numpy 提取矩阵的某一行或某一列的实例
Apr 03 Python
python单例模式原理与创建方法实例分析
Oct 26 Python
python学生信息管理系统实现代码
Dec 17 Python
PyCharm取消波浪线、下划线和中划线的实现
Mar 03 Python
Python使用tkinter实现摇骰子小游戏功能的代码
Jul 02 Python
容易被忽略的Python内置类型
Sep 03 Python
Pytest单元测试框架如何实现参数化
Sep 05 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
Oct 04 Python
python turtle绘图
May 04 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 高手之路(三)
2006/10/09 PHP
php5.2.0内存管理改进
2007/01/22 PHP
站长助手-网站web在线管理程序 v1.0 下载
2007/05/12 PHP
php中explode函数用法分析
2014/11/15 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
2015/02/08 PHP
Yii2中cookie用法示例分析
2016/07/18 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
javascript function、指针及内置对象
2009/02/19 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
jQuery实现点击小图显示大图代码分享
2015/08/25 Javascript
JavaScript代码判断点击第几个按钮
2015/12/13 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
图解js图片轮播效果
2015/12/20 Javascript
js实现人民币大写金额形式转换
2016/04/27 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
微信小程序 video组件详解
2016/10/25 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
微信小程序左右滑动的实现代码
2017/12/15 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
2018/10/11 Javascript
利用JavaScript为句子加标题的3种方法示例
2021/01/05 Javascript
K最近邻算法(KNN)---sklearn+python实现方式
2020/02/24 Python
一张图片能隐含千言万语之隐藏你的程序代码
2012/12/13 HTML / CSS
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
银行求职推荐信范文
2013/11/30 职场文书
机械工程学院大学生求职信
2014/05/25 职场文书
公司年终奖分配方案
2014/06/16 职场文书
应届大学生自荐书
2014/06/17 职场文书
超市促销活动总结
2014/07/01 职场文书
党性教育心得体会
2014/09/03 职场文书
店铺转让协议书
2015/01/29 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书