Skip to content

Instantly share code, notes, and snippets.

@myano
Created December 21, 2011 05:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save myano/1504768 to your computer and use it in GitHub Desktop.
Save myano/1504768 to your computer and use it in GitHub Desktop.
api wrapper for google translate
#!/usr/bin/env python
## index.cgi
import cgitb
cgitb.enable()
import os
import urllib
import urllib2
import web
## grab Google Translate API KEY
f = open("apikey.txt", "r")
API_KEY = unicode(f.readline()[:-1])
f.close()
def translate(phrase, tolang=False, fromlang=False):
bad_input = "Invalid input."
bad_input += "\nExamples:\n\n"
bad_input += "/tr/to_lang/phrase\n"
bad_input += "/tr/to_lang/from_lang/phrase"
## sanity checks
if (tolang and len(tolang) != 2) or (fromlang and len(fromlang) != 2):
print bad_input
print "A"
return
## start formulating the API
url = "https://www.googleapis.com/language/translate/v2?key={0}"
url = url.format(API_KEY)
url += "&q=" + (phrase).encode('utf-8')
url += "&target="
if not tolang:
tolang = "en"
url += tolang
if fromlang:
url += "&source=" + fromlang
url = (url).encode('utf-8')
url = web.decode(url)
data = urllib2.urlopen(url).read()
print data
#except urllib2.HTTPError:
# print bad_input
# print "B"
# return
def main():
print "Content-Type: text/html\n"
incoming = os.environ.get('REQUEST_URI', '/').split('/')
if len(incoming) == 3:
translate(incoming[-1])
elif len(incoming) == 4:
translate(incoming[-1], incoming[-2])
elif len(incoming) == 5:
translate(incoming[-1], incoming[-3], incoming[-2])
elif len(incoming) > 5:
phrase = '%20'.join(incoming[3:])
translate(phrase, incoming[2], incoming[3])
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment