-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
115 lines (89 loc) · 3.24 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from google.appengine.dist import use_library
use_library('django', '1.2')
import urllib, operator, re
import binascii
from google.appengine.api import urlfetch
from google.appengine.ext.webapp import template
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from django.utils import simplejson as json
import re
def asciirepl(match):
s = match.group()
return '\\u00' + match.group()[2:]
def remove_html_tags(data):
p = re.compile(r'<.*?>')
return p.sub('', data)
def request(url):
res = urllib.urlopen(url)
page = res.read()[2:-10]
p = re.compile(r'\\x(\w{2})')
ascii_string = p.sub(asciirepl, page)
return ascii_string
class dictionary(webapp.RequestHandler):
def get(self, word):
message = request("http://www.google.com/dictionary/json?callback=a&q=%s&sl=en&tl=en&restrict=pr,de" % word)
self.response.headers['Content-Type'] = 'application/json'
self.response.headers['Access-Control-Allow-Origin'] = '*'
pyobj = json.loads(message)
if "primaries" in pyobj:
main = json.loads(message)['primaries']
for i in main:
obj = {}
for o in i['terms']:
for k,v in o.iteritems():
if v == 'phonetic':
obj['pronunciation'] = o['text']
obj['definitions'] = []
for j in main[0]['entries']:
if j['type'] is "related":
continue;
else:
d = {}
d['def'] = j['terms'][0]['text']
if "entries" in j:
d['ex'] = j['entries'][0]['terms'][0]['text']
if not 'example' in obj:
obj['example'] = remove_html_tags(d['ex'])
obj['definitions'].append(d)
self.response.out.write( json.dumps(obj) )
else:
self.response.out.write(json.dumps({"success": "false", "message": "Word not found"}))
class google(webapp.RequestHandler):
def get(self, word):
message = request("http://www.google.com/dictionary/json?callback=a&q=%s&sl=en&tl=en&restrict=pr,de" % word)
self.response.headers['Content-Type'] = 'application/json'
self.response.headers['Access-Control-Allow-Origin'] = '*'
self.response.out.write(message)
class Home(webapp.RequestHandler):
def get(self):
userAgent = os.environ['HTTP_USER_AGENT']
if userAgent.find('iPhone') < 0:
main = urlfetch.fetch("http://cardmemoriae.appspot.com/main.html")
message = main.content
else:
mobile = urlfetch.fetch("http://cardmemoriae.appspot.com/mobile.html")
message = mobile.content
self.response.headers['Content-Type'] = 'text/html'
self.response.headers['Access-Control-Allow-Origin'] = '*'
self.response.out.write(message)
class Mobile(webapp.RequestHandler):
def get(self):
mobile = urlfetch.fetch("http://cardmemoriae.appspot.com/mobile.html")
message = mobile.content
self.response.headers['Content-Type'] = 'text/html'
self.response.headers['Access-Control-Allow-Origin'] = '*'
self.response.out.write(message)
application = webapp.WSGIApplication(
[
('/dictionary/(.*)', dictionary),
('/google/(.*)', google),
('/', Home)
],
debug=True)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()