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使用Berkeley DB数据库实例
Sep 26 Python
Python序列之list和tuple常用方法以及注意事项
Jan 09 Python
浅析python中SQLAlchemy排序的一个坑
Feb 24 Python
启动targetcli时遇到错误解决办法
Oct 26 Python
Python利用公共键如何对字典列表进行排序详解
May 19 Python
使用Py2Exe for Python3创建自己的exe程序示例
Oct 31 Python
使用Python完成15位18位身份证的互转功能
Nov 06 Python
python 实现绘制整齐的表格
Nov 18 Python
python3实现用turtle模块画一棵随机樱花树
Nov 21 Python
浅谈matplotlib.pyplot与axes的关系
Mar 06 Python
详解Python直接赋值,深拷贝和浅拷贝
Jul 09 Python
python中用ctypes模拟点击的实例讲解
Nov 26 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
Laravel 5 框架入门(三)
2015/04/09 PHP
php根据年月获取当月天数及日期数组的方法
2016/11/30 PHP
JS 继承实例分析
2008/11/04 Javascript
查看图片(前进后退)功能实现js代码
2013/04/24 Javascript
浅谈JS闭包中的循环绑定处理程序
2014/11/09 Javascript
浅谈EasyUI中Treegrid节点的删除
2015/03/01 Javascript
JavaScript实现的简单烟花特效代码
2015/10/20 Javascript
jquery实现移动端点击图片查看大图特效
2020/09/11 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
解决vue数组中对象属性变化页面不渲染问题
2018/08/09 Javascript
详解Vue结合后台的列表增删改案例
2018/08/21 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
Vuex的actions属性的具体使用
2019/04/14 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
开发Node CLI构建微信小程序脚手架的示例
2020/03/27 Javascript
微信小程序实现签到弹窗动画
2020/09/21 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
[02:20]DOTA2亚洲邀请赛 EHOME战队出场宣传片
2015/02/07 DOTA
[01:46]2020完美世界全国高校联赛秋季赛报名开启
2020/10/15 DOTA
解决Python出现_warn_unsafe_extraction问题的方法
2016/03/24 Python
Django中url的反向查询的方法
2018/03/14 Python
python3+PyQt5实现文档打印功能
2018/04/24 Python
对Tensorflow中的矩阵运算函数详解
2018/07/27 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
MxNet预训练模型到Pytorch模型的转换方式
2020/05/25 Python
一款纯css3实现的非常实用的鼠标悬停特效演示
2014/11/05 HTML / CSS
野兽派官方旗舰店:THE BEAST 野兽派
2016/08/05 全球购物
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
《得道多助,失道寡助》教学反思
2014/04/19 职场文书
小学优秀辅导员事迹材料
2014/05/11 职场文书
2017新年晚会开幕词
2016/03/03 职场文书
如何在centos上使用yum安装rabbitmq-server
2021/03/31 Servers
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫