分页: 1 / 1

一个简单的Google Translate命令行

发表于 : 2009-01-20 23:53
anticlockwise
自己写了一个非常简单的Python脚本用来调用Google Translate

代码: 全选

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# filename: /usr/bin/tt
# author: Rongzhou Shen

import urllib
import urllib2
import sys
import jsonlib
from optparse import OptionParser

URL = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s%%7C%s"

parser = OptionParser()
parser.add_option("-f", "--from", dest="lang1",
        help="The language code to translate from", default="en")
parser.add_option("-t", "--to", dest="lang2",
        help="The language code to translate to", default="zh")

(options, args) = parser.parse_args()
if len(args) < 1:
    print "Usage: python translate.py <translate text>"
    sys.exit(0)

text = ' '.join(args)
print "Translating %s from %s to %s" % (text, options.lang1, options.lang2)
query = (URL % (urllib.quote(text), options.lang1, options.lang2))
req = urllib2.Request(query)
req.add_header("Referer", "http://www.my-ajax-site.com")
r = urllib2.urlopen(req)

data = r.read()
obj = jsonlib.read(data)
if obj['responseStatus'] != 200L:
    print "Error: %s" % obj['responseDetails']
else:
    print "Translated text: %s" % obj['responseData']['translatedText']
例子:

代码: 全选

$ tt Hello World
Translating Hello World from en to zh
Translated text: 世界您好
$ tt -t fr Hello World
Translating Hello World from en to fr
Translated text: Bonjour tout le monde

Re: 一个简单的Google Translate命令行

发表于 : 2010-12-19 21:51
numbchild
[chris][21:50:24]$ ./google_translate.py
Traceback (most recent call last):
File "./google_translate.py", line 11, in <module>
import jsonlib
ImportError: No module named jsonlib
[chris][21:50:28]$

Re: 一个简单的Google Translate命令行

发表于 : 2010-12-19 22:01
ChenFengyuan
弯弯 :em11

Re: 一个简单的Google Translate命令行

发表于 : 2011-03-12 12:54
lgxwqq
要不我给lz开发个gui吧,顺便学习下 :em11

Re: 一个简单的Google Translate命令行

发表于 : 2011-03-12 13:11
hcym
44

谢谢

Re: 一个简单的Google Translate命令行

发表于 : 2011-03-12 14:15
lgxwqq
安装jsonlib也跑不通阿,
求lz指点
gt:[email protected]

Re: 一个简单的Google Translate命令行

发表于 : 2011-03-12 14:28
realfiona
numbchild 写了:[chris][21:50:24]$ ./google_translate.py
Traceback (most recent call last):
File "./google_translate.py", line 11, in <module>
import jsonlib
ImportError: No module named jsonlib
[chris][21:50:28]$
使用json模块

代码: 全选


#!/usr/bin/env python
# -*- coding: utf-8 -*-

# filename: /usr/bin/tt
# author: Rongzhou Shen

import urllib
import urllib2
import sys
#import jsonlib
import json
from optparse import OptionParser

URL = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s%%7C%s"

parser = OptionParser()
parser.add_option("-f", "--from", dest="lang1",
        help="The language code to translate from", default="en")
parser.add_option("-t", "--to", dest="lang2",
        help="The language code to translate to", default="zh")

(options, args) = parser.parse_args()
if len(args) < 1:
    print "Usage: python translate.py <translate text>"
    sys.exit(0)

text = ' '.join(args)
print "Translating %s from %s to %s" % (text, options.lang1, options.lang2)
query = (URL % (urllib.quote(text), options.lang1, options.lang2))
req = urllib2.Request(query)
req.add_header("Referer", "http://www.my-ajax-site.com")
r = urllib2.urlopen(req)

data = r.read()
obj = json.loads(data)
if obj['responseStatus'] != 200L:
    print "Error: %s" % obj['responseDetails']
else:
    print "Translated text: %s" % obj['responseData']['translatedText']

Re: 一个简单的Google Translate命令行

发表于 : 2011-03-12 16:32
flay
不错,好东西,收下了。

Re: 一个简单的Google Translate命令行

发表于 : 2011-03-12 19:11
lgxwqq
看明白了,原来是用的google的API :em11

Re: 一个简单的Google Translate命令行

发表于 : 2013-04-06 15:49
qq8593001qq
Translating hello from en to zh
Error: Please use Translate v2. See http://code.google.com/apis/language/tr ... rview.html

网站暂时打不开
Python 2.7.3

Re: 一个简单的Google Translate命令行

发表于 : 2013-04-06 17:24
October21
qq8593001qq 写了:Translating hello from en to zh
Error: Please use Translate v2. See http://code.google.com/apis/language/tr ... rview.html

网站暂时打不开
Python 2.7.3
谷歌api换了,都两三年了 :em20
qq8593001qq 你还试干嘛?