グーグル翻訳スクリプト

みなさんこんにちは。 以下で説明するのは、Pythonを使用した初めての(少なくとも私にとって)初めての経験です。 スクリプトを改善/最適化する方法を教えていただければ幸いです。







古代から、私はあなたが彼を養うすべてを翻訳するGoogleを通して翻訳されたbashのスクリプトを持っていました

translate 'test' en ru







Googleが最近学んだように、私は彼に可能な代替案を提供してほしいと思った。 同時に、私はPythonの練習を手配することにしました:)





起こったことは次のとおりです。

#! /usr/bin/env python

# -*- coding: utf-8 -*-

"" "This script allow users to translate a string

from one language to another with Google translate"
""



import sys

import re

import urllib

import urllib2

import json



def print_params(data):

"" "print parameters from list" ""

for val in data:

if isinstance(val, basestring):

print "\t " + val



def main():

"" "

Usage:

first arg - string to translate

second arg - source lang

third arg - target lang

Example:

translate.py 'text to translate' en ru

translate.py 'text to translate' ru en

"
""



url = "http://translate.google.com/translate_a/t?%s"

list_of_params = { 'client' : 't' ,

'hl' : 'en' ,

'multires' : '1' , }



#all arguments given

if len(sys.argv) == 4:

list_of_params.update({ 'text' : sys.argv[1],

'sl' : sys.argv[2],

'tl' : sys.argv[3] })



request = urllib2.Request(url % urllib.urlencode(list_of_params),

headers={ 'User-Agent' : 'Mozilla/5.0' , 'Accept-Charset' : 'utf-8' })

res = urllib2.urlopen(request).read()



fixed_json = re.sub(r ',{2,}' , ',' , res).replace( ',]' , ']' )

data = json.loads(fixed_json)



#simple translation

print "%s / %s / %s" % (data[0][0][0], data[0][0][1],

data[0][0][2] or data[0][0][3])



#abbreviation

if not isinstance(data[1], basestring):

print data[1][0][0]

print_params(data[1][0][1])



#interjection

try :

if not isinstance(data[1][1], basestring):

print data[1][1][0]

print_params(data[1][1][1])

except Exception:

print "no interjection"

else :

print main.__doc__



if __name__ == '__main__' :

main()




* This source code was highlighted with Source Code Highlighter .








ダウンロードスクリプト



PS

建設的なコメントをありがとう。 コードとファイルを更新しました。

フレーズがあなたの調子が似ていたらエラーを出しましたか? #修正済み



PPS

あなたの肯定的なフィードバックと建設的な批判に感謝します。

リクエストに応じて、Googleを介してAPI v2を翻訳するスクリプトの別のバージョンを作成しました。 残念ながら、APIは単一の単語の複数の意味を提供しません。 おそらく将来、この機能が追加されるでしょう。



スクリプトの2番目のバージョンを使用するには、 code.google.com / apis / console / ?api = translateで APIキーを取得し、スクリプト内のキーで*****を置き換える必要があります。



スクリプト自体は次のとおりです。



#! /usr/bin/env python

# -*- coding: utf-8 -*-

"" "This script allow users to translate a string

from one language to another with Google Translate API

You have to insert Your Translate API key

Get your API key from here:

code.google.com/apis/console/?api=translate

Replace

api_key = '**********' with your API key

"
""



import sys

import urllib

import urllib2

import json



def translate(list_of_params):

"" "Translate given text" ""

url = "https://www.googleapis.com/language/translate/v2?%s"

request = urllib2.Request(url % urllib.urlencode(list_of_params),

headers={ 'User-Agent' : 'Mozilla/5.0' , 'Accept-Charset' : 'utf-8' })

res = urllib2.urlopen(request).read()

translated = json.loads(res)

for translations in translated[ 'data' ][ 'translations' ]: print translations[ 'translatedText' ]



def main():

"" "

Usage:

first arg - string to translate

second arg - source lang

third arg - target lang

Example:

translate.py 'text to translate' en ru

translate.py 'text to translate' ru en

translate.py 'auto detect source language' ru

"
""

api_key = '**********'

list_of_params = { 'key' : api_key, }



if len(sys.argv) == 4:

#both langs entered

list_of_params.update({ 'q' : sys.argv[1],

'source' : sys.argv[2],

'target' : sys.argv[3] })

translate(list_of_params)

elif len(sys.argv) == 3:

#auto source language

list_of_params.update({ 'q' : sys.argv[1],

'target' : sys.argv[2] })

translate(list_of_params)

else :

print main.__doc__



if __name__ == '__main__' :

main()



* This source code was highlighted with Source Code Highlighter .








ダウンロードスクリプト



All Articles