说明
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)