From 41e04fd1f6880999d6d2ac3af8554f4717c28cef Mon Sep 17 00:00:00 2001 From: "U-REDMOND\\t-byahn" Date: Thu, 9 Jun 2011 20:44:19 -0700 Subject: [PATCH] first commit --- README.md | 21 ++++++++++++++++ bingtrans/__init__.py | 53 +++++++++++++++++++++++++++++++++++++++++ bingtrans/__init__.pyc | Bin 0 -> 2122 bytes setup.py | 11 +++++++++ 4 files changed, 85 insertions(+) create mode 100755 README.md create mode 100755 bingtrans/__init__.py create mode 100755 bingtrans/__init__.pyc create mode 100755 setup.py diff --git a/README.md b/README.md new file mode 100755 index 0000000..51cdafa --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +Bingtrans +========= + +Bingtrans is a Python library for interfacing with Microsoft Translate API. + +#Wikipydia is licensed under the [Apache Licence, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) + +Features +-------- + +Bingtrans can: + +- translate a text or html file in a language into another language + +Install +------- + +python ./setup.py install + + +Byung Gyu Ahn <> diff --git a/bingtrans/__init__.py b/bingtrans/__init__.py new file mode 100755 index 0000000..73d67cb --- /dev/null +++ b/bingtrans/__init__.py @@ -0,0 +1,53 @@ +""" +Interface to Microsoft Translator API +""" +import urllib +import codecs +import json + +api_url = "http://api.microsofttranslator.com/V2/Ajax.svc/Translate" +app_id = '' + +def _unicode_urlencode(params): + """ + A unicode aware version of urllib.urlencode. + Borrowed from pyfacebook :: http://github.com/sciyoshi/pyfacebook/ + """ + if isinstance(params, dict): + params = params.items() + return urllib.urlencode([(k, isinstance(v, unicode) and v.encode('utf-8') or v) for k, v in params]) + +def _run_query(args): + """ + takes arguments and optional language argument and runs query on server + """ + data = _unicode_urlencode(args) + sock = urllib.urlopen(api_url + '?' + data) + result = sock.read() + if result.startswith(codecs.BOM_UTF8): + result = result.lstrip(codecs.BOM_UTF8).decode('utf-8') + elif result.startswith(codecs.BOM_UTF16_LE): + result = result.lstrip(codecs.BOM_UTF16_LE).decode('utf-16-le') + elif result.startswith(codecs.BOM_UTF16_BE): + result = result.lstrip(codecs.BOM_UTF16_BE).decode('utf-16-be') + return json.loads(result) + +def set_app_id(new_app_id): + global app_id + app_id = new_app_id + +def translate(text, source, target, html=False): + """ + action=opensearch + """ + if not app_id: + raise ValueError("AppId needs to be set by set_app_id") + query_args = { + 'appId': app_id, + 'text': text, + 'from': source, + 'to': target, + 'contentType': 'text/plain' if not html else 'text/html', + 'category': 'general' + } + return _run_query(query_args) diff --git a/bingtrans/__init__.pyc b/bingtrans/__init__.pyc new file mode 100755 index 0000000000000000000000000000000000000000..91c750eb14c6610efd49ccd36d8abee68662263a GIT binary patch literal 2122 zcma)7UvC>l5T83ccI>7!DpcW#9O9vVsjYxyg@}I%BvJ$^$SHjYRHyab+P>y|d)?hj zYN_FY_ABv0;A`;47l7Z)IZj0-sGS|p&hG5a&hIyq-~YPZ{q5+_lZ2L^HT-^s;S@wl zbOsqv8q#?{XHaTAq_gl^Z_rtTQphHyO;T%=uF)$vwkU0h(x$X6$~x%|rR($xM|Jtk z(_V+Kx)0GkF1)rAmFUQu=p;+5ac1J9M^+UsSKioY|A*sl_BTEc-7Y+4-j{oWfhx29 z{Cc}z?d~ULK6w1`VE?Il-gg(t;QAo#;Y&#X(ZpEC_!`5p8RG?HKrcfwn-pM@h4hl> zil_)E@D0kEG==9?z&pQr@+tis(iQ$1^a7?(j%biyTO9!xWCBM9R5o#BgC-%}eYQit zi0!l&^6j{Qx)DD6QB`D#Np++ymDSOOwk|V8WF}E%^E?~(@uLgg(HDmUW39Q=X*98B z9+eAD;n_&G?yZ!7p3CF=Ze$7y{1*6}n!oJ-Tmth>1NK*B+m| z?s4l)4>7R^BC79T7H&{>n`49Nw8wzBZy~xJug5aHId+B*a{c;jtb6ZZ?`VUCAS~$H+>{7` zb<`(=Byd};QehTYWxcxuFNG1z=EQlf#e?rp;vXL!?TS5j-e#q!*nmxV`fAJ0F#hiF zUxtH2x#y`fg)lWYDs?sUI5?!H=3T11lAX>Z=W@Q)uFCye@sCR*M&e@0+k2Qf7S!Ab zwt|h|-C%n)5>Djx5EimCI){?xdfMZ)hax2kRhDs<)^pxj=*xI%!|Z=6gI%2VOP7y$ z#@&U&gkR50X<$ekF%(ooi7p4U>;Cj>AYE?O;uX+(h(N*BA&LV89HKJN+J_)s*`@%^ zy+A)hYez>Prr>CohF4AUC?R3%X-`U$>$uxd3DfX%W`)zrCbMqGaeVt_d7MUt)~VyZ zKi1%&kH!oBSw2I6L=uiuLCovtUKH+kxD3xQjvvkogECj>Sxi@%&ip+097X~{fRK+C zr509Bb)l`wg>s4VdTQ*V$H^IOvoD|bSml*IM02&H4=|NN8*$8nlrxn@U*v`ZE>CqG zlibJ7LXDXD_EwaVfS3Qf^nLg*8P!H7YXt4(_g>HqC8_d+I8IFx$5M48?un!KS=?d4 zkEm;sLmzzzA!$5PxznRQrZ-`U_8;wb9lJl9o3zUH7n~u-ceOxte8X1I3Ok+7olf%~ D6z9q7 literal 0 HcmV?d00001 diff --git a/setup.py b/setup.py new file mode 100755 index 0000000..fab8acc --- /dev/null +++ b/setup.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python + +from distutils.core import setup + +setup(name='bingtrans', + version='0.1', + description='Python Client Library for the Microsoft Translate API', + author='Byung Gyu Ahn', + author_email='bahn@cs.jhu.edu', + url='http://github.com/bahn/bingtrans', + packages=['bingtrans'])