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使用smtplib模块通过gmail实现邮件发送的方法
May 08 Python
Python实现求笛卡尔乘积的方法
Sep 16 Python
python django使用haystack:全文检索的框架(实例讲解)
Sep 27 Python
Python实现桶排序与快速排序算法结合应用示例
Nov 22 Python
PYTHON基础-时间日期处理小结
May 05 Python
django组合搜索实现过程详解(附代码)
Aug 06 Python
nginx+uwsgi+django环境搭建的方法步骤
Nov 25 Python
Django自带的加密算法及加密模块详解
Dec 03 Python
Python猜数字算法题详解
Mar 01 Python
Jupyter 无法下载文件夹如何实现曲线救国
Apr 22 Python
python 爬取豆瓣网页的示例
Apr 13 Python
使用Djongo模块在Django中使用MongoDB数据库
Jun 20 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 时间日期操作实战
2011/08/26 PHP
php读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
php中simplexml_load_file函数用法实例
2014/11/12 PHP
再推荐十款免费的php开发工具
2015/11/09 PHP
phpMyAdmin无法登陆的解决方法
2017/04/27 PHP
php实现小程序支付完整版
2018/10/09 PHP
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
JQuery选择器特辑 详细小结
2012/05/14 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
extjs ColumnChart设置不同的颜色实现代码
2013/05/17 Javascript
js捕获鼠标滚轮事件代码
2013/12/16 Javascript
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
javascript实现树形菜单的方法
2015/07/17 Javascript
JavaScript中的this到底是什么(一)
2015/12/09 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
vue实现路由监听和参数监听
2019/10/29 Javascript
Python采用Django开发自己的博客系统
2020/09/29 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
python 实现识别图片上的数字
2019/07/30 Python
Python中实现输入超时及如何通过变量获取变量名
2020/01/18 Python
纯CSS3实现的8种Loading动画效果
2014/07/05 HTML / CSS
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
办公室助理岗位职责
2013/12/25 职场文书
学习心得体会
2014/01/01 职场文书
总经理任命书范本
2014/06/05 职场文书
2014年营业员工作总结
2014/11/18 职场文书
小学教师教学随笔
2015/08/14 职场文书
创业计划书之旅游网站
2019/09/06 职场文书
python函数指定默认值的实例讲解
2021/03/29 Python
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
python实现黄金分割法的示例代码
2021/04/28 Python
Nginx+Windows搭建域名访问环境的操作方法
2022/03/17 Servers