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 open读写文件实现脚本
Sep 06 Python
新手该如何学python怎么学好python?
Oct 07 Python
python冒泡排序算法的实现代码
Nov 21 Python
基于scrapy实现的简单蜘蛛采集程序
Apr 17 Python
在Django中使用Sitemap的方法讲解
Jul 22 Python
python中的错误处理
Apr 10 Python
Python中Django发送带图片和附件的邮件
Mar 31 Python
python pandas实现excel转为html格式的方法
Oct 23 Python
Python通过VGG16模型实现图像风格转换操作详解
Jan 16 Python
对tensorflow 中tile函数的使用详解
Feb 07 Python
QML用PathView实现轮播图
Jun 03 Python
Python+unittest+requests 接口自动化测试框架搭建教程
Oct 09 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
很温暖很温暖的Lester Young
2021/03/03 冲泡冲煮
php array_map()数组函数使用说明
2011/07/12 PHP
浅析php原型模式
2014/11/25 PHP
Javascript Object.extend
2010/05/18 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
微信小程序 教程之小程序配置
2016/10/17 Javascript
js实现密码强度检验
2017/01/15 Javascript
angular 动态组件类型详解(四种组件类型)
2017/02/22 Javascript
React Native AsyncStorage本地存储工具类
2017/10/24 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
javascript数组去重方法总结(推荐)
2019/03/20 Javascript
JS实现的对象去重功能示例
2019/06/04 Javascript
JS实现在线ps功能详解
2019/07/31 Javascript
vuex state中的数组变化监听实例
2019/11/06 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
将Vue组件库更换为按需加载的方法步骤
2020/05/06 Javascript
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
深入解析Python中的lambda表达式的用法
2015/08/28 Python
Python3安装Scrapy的方法步骤
2017/11/23 Python
python 爬虫 批量获取代理ip的实例代码
2018/05/22 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
python网络应用开发知识点浅析
2019/05/28 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
纯CSS3实现移动端展开和收起效果的示例代码
2020/04/26 HTML / CSS
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
全球工业:Global Industrial
2020/02/01 全球购物
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
党员反对四风问题思想汇报
2014/09/12 职场文书
推普标语口号大全
2015/12/26 职场文书
JS class语法糖的深入剖析
2022/07/07 Javascript