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中的一些陷阱与技巧小结
Jul 10 Python
Python类属性的延迟计算
Oct 22 Python
Python使用pymysql小技巧
Jun 04 Python
python实现定时提取实时日志程序
Jun 22 Python
Python企业编码生成系统之系统主要函数设计详解
Jul 26 Python
pytorch的batch normalize使用详解
Jan 15 Python
VScode连接远程服务器上的jupyter notebook的实现
Apr 23 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
May 27 Python
python实现简单的tcp 文件下载
Sep 16 Python
python实现逻辑回归的示例
Oct 09 Python
Python 内置函数速查表一览
Jun 02 Python
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
Apr 13 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
怎样在UNIX系统下安装php3
2006/10/09 PHP
基于mysql的论坛(6)
2006/10/09 PHP
php下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
2014/08/20 PHP
PHP中的类型提示(type hinting)功能介绍
2015/07/01 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
2020/02/11 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
js选项卡的制作方法
2017/01/23 Javascript
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
2017/03/21 jQuery
Bootstrap Table使用整理(四)之工具栏
2017/06/09 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
2018/03/12 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(上)
2018/04/18 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
微信小程序调用wx.getImageInfo遇到的坑解决
2020/05/31 Javascript
关于element的表单组件整理笔记
2021/02/05 Javascript
[51:28]EG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/16 DOTA
重命名批处理python脚本
2013/04/05 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
python实现俄罗斯方块游戏
2020/03/25 Python
python global和nonlocal用法解析
2020/02/03 Python
python+OpenCV实现图像拼接
2020/03/05 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
Python中and和or如何使用
2020/05/28 Python
信息技术教学反思
2014/02/12 职场文书
2014年教师业务工作总结
2014/12/19 职场文书
师德师风事迹材料
2014/12/20 职场文书
后天观后感
2015/06/08 职场文书
小学一年级班主任工作经验交流材料
2015/11/02 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
php修改word的实例方法
2021/11/17 PHP