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下singleton模式的实现方法
Jul 16 Python
python同时给两个收件人发送邮件的方法
Apr 30 Python
轻松实现python搭建微信公众平台
Feb 16 Python
django中的HTML控件及参数传递方法
Mar 20 Python
python里dict变成list实例方法
Jun 26 Python
pandas 如何分割字符的实现方法
Jul 29 Python
python 五子棋如何获得鼠标点击坐标
Nov 04 Python
使用python实现回文数的四种方法小结
Nov 24 Python
Pycharm中import torch报错的快速解决方法
Mar 05 Python
Python面向对象特殊属性及方法解析
Sep 16 Python
python中温度单位转换的实例方法
Dec 27 Python
ubuntu安装jupyter并设置远程访问的实现
Mar 31 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/07/08 PHP
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
2006/10/09 PHP
php/js获取客户端mac地址的实现代码
2013/07/08 PHP
PHP计算加权平均数的方法
2015/07/16 PHP
php strftime函数的详细用法
2018/06/21 PHP
JS实现点击图片在当前页面放大并可关闭的漂亮效果
2013/10/18 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
jquery实现的一个简单进度条效果实例
2014/05/12 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
jQuery获取上传文件的名称的正则表达式
2015/05/21 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
详解JavaScript中return的用法
2017/05/08 Javascript
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
2017/05/17 Javascript
Angular.js中$resource高大上的数据交互详解
2017/07/30 Javascript
微信小程序movable view移动图片和双指缩放实例代码
2017/08/08 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
wxPython学习之主框架实例
2014/09/28 Python
使用python开发vim插件及心得分享
2014/11/04 Python
Python基于pillow判断图片完整性的方法
2016/09/18 Python
Django框架的中的setting.py文件说明详解
2018/10/15 Python
python实现ip代理池功能示例
2019/07/05 Python
python tornado使用流生成图片的例子
2019/11/18 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
详解CSS的border边框属性及其在CSS3中的新特性
2016/05/10 HTML / CSS
Mountain Warehouse澳大利亚官网:欧洲家庭户外品牌倡导者
2016/11/20 全球购物
毕业生求职信的经典写法
2014/01/31 职场文书
新护士岗前培训制度
2014/02/02 职场文书
2014年物流工作总结
2014/11/25 职场文书
五好文明家庭事迹材料
2014/12/20 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
实习报告怎么写
2019/06/20 职场文书
Nginx已编译的nginx-添加新模块
2021/04/01 Servers
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
2021/05/21 Redis
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫