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 相关文章推荐
写了个监控nginx进程的Python脚本
May 10 Python
python删除列表中重复记录的方法
Apr 28 Python
在Python操作时间和日期之asctime()方法的使用
May 22 Python
python关键字and和or用法实例
May 28 Python
Python实现基本数据结构中栈的操作示例
Dec 04 Python
python爬虫基本知识
Mar 05 Python
python将.ppm格式图片转换成.jpg格式文件的方法
Oct 27 Python
对python中的乘法dot和对应分量相乘multiply详解
Nov 14 Python
python pandas cumsum求累计次数的用法
Jul 29 Python
django-crontab 定时执行任务方法的实现
Sep 06 Python
python在不同条件下的输入与输出
Feb 13 Python
python 使用递归的方式实现语义图片分割功能
Jul 16 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/02/16 PHP
PHP基础知识回顾
2012/08/16 PHP
PHP将回调函数作用到给定数组单元的方法
2014/08/19 PHP
PHP中的一些常用函数收集
2015/05/26 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
总结AJAX相关JS代码片段和浏览器模型
2007/08/15 Javascript
JavaScript RegExp方法获取地址栏参数(面向对象)
2009/03/10 Javascript
EXTJS记事本 当CompositeField遇上RowEditor
2011/07/31 Javascript
jquery实现手风琴效果实例代码
2013/11/15 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
关于jQuery EasyUI 中刷新Tab选项卡后一个页面变形的解决方法
2017/03/02 Javascript
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
Angular.js中$resource高大上的数据交互详解
2017/07/30 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
详解vue.js移动端配置flexible.js及注意事项
2019/04/10 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
浅谈vue项目用到的mock数据接口的两种方式
2019/10/09 Javascript
Selenium执行JavaScript脚本的方法示例
2020/12/31 Javascript
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
详解Python self 参数
2019/08/30 Python
Python 词典(Dict) 加载与保存示例
2019/12/06 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
django 连接数据库出现1045错误的解决方式
2020/05/14 Python
python从PDF中提取数据的示例
2020/10/30 Python
python中Pexpect的工作流程实例讲解
2021/03/02 Python
移动端rem布局的两种实现方法
2018/01/03 HTML / CSS
本科毕业生求职自荐信
2014/02/03 职场文书
小学运动会入场式解说词
2014/02/18 职场文书
个人收入证明范本
2014/09/18 职场文书
2019年干货:自我鉴定
2019/03/25 职场文书