python在命令行下使用google翻译(带语音)

说明

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)

(0)

相关推荐

  • python 获取命令行参数 函数

    import sys print sys.argv print len(sys.argv) #参数个数 print sys.argv[1] #第一个参数 print sys.argv[2]

  • python实现读取命令行参数的方法

    本文实例讲述了python读取命令行参数的方法.分享给大家供大家参考.具体分析如下: 如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢? 需要模块:sys 参数个数:len(sys.argv) 脚本名:    sys.argv[0] 参数1:     sys.argv[1] 参数2:     sys.argv[2] test.py: import sys print "脚本名:", sys.argv[0] for i in rang

  • python获取从命令行输入数字的方法

    本文实例讲述了python获取从命令行输入数字的方法.分享给大家供大家参考.具体如下: #---------------------------------------- # Name: numerical_input.py # Author: Kevin Harris # Last Modified: 02/13/04 # Description: This Python script demonstrates # how to get numerical input # from the c

  • Python getopt模块处理命令行选项实例

    getopt模块用于抽出命令行选项和参数,也就是sys.argv命令行选项使得程序的参数更加灵活.支持短选项模式和长选项模式例如  python scriptname.py -f 'hello' --directory-prefix=/home -t --format 'a' 'b' 复制代码 代码如下: import getopt, sysshortargs = 'f:t'longargs = ['directory-prefix=', 'format']opts, args = getopt

  • python命令行参数解析OptionParser类用法实例

    本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考. 具体代码如下: from optparse import OptionParser parser = OptionParser(usage="usage:%prog [optinos] filepath") parser.add_option("-t", "--timeout", action = "store", type =

  • Python 命令行非阻塞输入的小例子

    随手google咗一下,基本上都用select实现非阻塞监听,但问题是,监听的是用select之后是不能像getchar()那样,即时收到单个字符的输入,必须要等待回车. 经过努力不怠咁google... [好吧,还是google.没有google什么也做不了.] 最后系一大堆英文资料入面,拼凑出如下可用的代码,实现了单个字符非阻塞输入. show code below. 复制代码 代码如下: #!/usr/bin/python# -*- coding: utf-8 -*-""&quo

  • 更改Python命令行交互提示符的方法

    一.定制Python的交互提示符 Python的默认交互提示符为">>>",但它是可以定制的. Python启动后,先寻找PYTHONSTARTUP环境变量,然后执行此文件中变量指定的执行代码. 一些Linux发布包提供了缺省的启动脚本,一般存放在其home目录,名为.pythonstartup."Tab完成"和"命令历史"这两个功能增强了提示符应用,两者都基于readline模块. 如果没有.pythonstartup文件,可

  • Python实现获取命令行输出结果的方法

    本文实例讲述了Python实现获取命令行输出结果的方法.分享给大家供大家参考,具体如下: Python获取命令行输出结果,并对结果进行过滤找到自己需要的! 这里以获取本机MAC地址和IP地址为例! # coding: GB2312 import os, re # execute command, and return the output def execCmd(cmd): r = os.popen(cmd) text = r.read() r.close() return text # wri

  • python实现定制交互式命令行的方法

    Python的交互式命令行可通过启动文件来配置. 当Python启动时,会查找环境变量PYTHONSTARTUP,并且执行该变量中所指定文件里的程序代码.该指定文件名称以及地址可以是随意的.按Tab键时会自动补全内容和命令历史.这对命令行的有效增强,而这些工具则是基于readline模块实现的(这需要readline程序库辅助实现). 此处为大家举一个简单的启动脚本文件例子,它为python命令行添加了按键自动补全内容和历史命令功能. [python@python ~]$ cat .python

  • Python命令行参数解析模块optparse使用实例

    示例 复制代码 代码如下: from optparse import OptionParser [...] def main():     usage = "usage: %prog [options] arg"     parser = OptionParser(usage)     parser.add_option("-f", "--file", dest="filename",                     

  • python在windows命令行下输出彩色文字的方法

    本文实例讲述了python在windows命令行下输出彩色文字的方法.分享给大家供大家参考.具体分析如下: 默认情况下python在控制台输出的文字信息都是黑白的,如果能将文字做成彩色的输出,输出效果会更完美,也很酷,不是吗,下面是一段演示代码,这段代码封装了一个color类用来输出带颜色的文字,只要调用该类里面的相关方法就可以了,非常简单. 复制代码 代码如下: #!/usr/bin/env python #encoding: utf-8 import ctypes STD_INPUT_HAN

随机推荐