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类属性与实例属性用法分析
May 09 Python
Python映射拆分操作符用法实例
May 19 Python
Python第三方库的安装方法总结
Jun 06 Python
使用pyecharts在jupyter notebook上绘图
Apr 23 Python
浅析Python中的赋值和深浅拷贝
Aug 15 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
Feb 20 Python
如何使用Python实现自动化水军评论
Jun 26 Python
Python从入门到精通之环境搭建教程图解
Sep 26 Python
Python数据可视化:箱线图多种库画法
Nov 06 Python
django 获取字段最大值,最新的记录操作
Aug 09 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
Oct 28 Python
python requests库的使用
Jan 06 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 常用类汇总 推荐收藏
2010/05/13 PHP
用PHP书写安全的脚本代码
2012/02/05 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
js中arguments的用法(实例讲解)
2013/11/30 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
全面了解JavaScript的数据类型转换
2016/07/01 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
JS公共小方法之判断对象是否为domElement的实例
2016/11/25 Javascript
详解能在多种前端框架下使用的表格控件
2017/01/11 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
详解Vuex管理登录状态
2017/11/13 Javascript
karma+webpack搭建vue单元测试环境的方法示例
2018/05/24 Javascript
vue实现日历备忘录功能
2020/09/24 Javascript
JS实现音量控制拖动
2020/01/15 Javascript
vue element el-transfer增加拖拽功能
2021/01/15 Vue.js
Python SQLite3数据库操作类分享
2014/06/10 Python
python实现数独算法实例
2015/06/09 Python
python实现蒙特卡罗方法教程
2019/01/28 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
Python编写打字训练小程序
2019/09/26 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
python 将dicom图片转换成jpg图片的实例
2020/01/13 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
Tory Burch英国官方网站:美国时尚生活品牌
2017/12/06 全球购物
2019年Java面试必问之经典试题
2012/09/12 面试题
婚礼主持词开场白
2014/03/13 职场文书
土建工程师岗位职责
2014/06/10 职场文书
女性健康讲座主持词
2015/07/04 职场文书
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS