| author | veltr |
| Wed, 22 Feb 2012 11:06:11 +0100 | |
| changeset 32 | 1e47b1f9f42d |
| parent 6 | 8ffe9b89a23e |
| child 33 | 98ffc58f0bd3 |
| permissions | -rw-r--r-- |
| 1 | 1 |
#!/usr/bin/env python |
2 |
# -*- coding: utf-8 -*- |
|
3 |
||
4 |
from flask import Response, request #@UnresolvedImport |
|
5 |
from flaskext.sqlalchemy import get_debug_queries |
|
6 |
from iri_tweet.models import TweetSource, Tweet |
|
| 6 | 7 |
from sqlalchemy import func #@UnresolvedImport |
8 |
from tweetgserver import app, db |
|
9 |
from datetime import datetime |
|
| 1 | 10 |
import simplejson as json #@UnresolvedImport |
11 |
||
12 |
def jsonpwrap(resobj): |
|
13 |
resp_str = json.dumps(resobj) |
|
14 |
callback_param = request.args.get("callback") |
|
15 |
if callback_param: |
|
16 |
resp_str = "%s( %s );" % (callback_param, resp_str) |
|
17 |
mime_type = 'text/javascript' |
|
18 |
else: |
|
19 |
mime_type = 'application/json' |
|
20 |
return Response(resp_str, mimetype=mime_type) |
|
21 |
||
22 |
@app.route('/', methods=['GET']) |
|
23 |
def index(): |
|
24 |
query = db.session.query(func.count(TweetSource.id)) #@UndefinedVariable |
|
25 |
ts_list_count = query.scalar() |
|
26 |
return 'Nb of tweets ' + str(ts_list_count) |
|
27 |
||
| 6 | 28 |
@app.route('/total/<int:since>', methods=['GET']) |
29 |
def total(since): |
|
30 |
sincetime = datetime.fromtimestamp(since) |
|
31 |
delta_td = datetime.now() - sincetime |
|
32 |
delta_s = delta_td.total_seconds() |
|
33 |
query = db.session.query(func.count(Tweet.id)).filter(Tweet.created_at >= sincetime) #@UndefinedVariable |
|
| 1 | 34 |
ts_list_count = query.scalar() |
| 6 | 35 |
res = { |
36 |
"total" : ts_list_count, |
|
37 |
"delta": int(delta_s), |
|
38 |
"tweets_per_minute": 60. * ts_list_count / delta_s |
|
39 |
} |
|
40 |
return jsonpwrap(res) |
|
| 1 | 41 |
|
| 6 | 42 |
@app.route('/podium/<int:since>/<tokens>', methods=['GET']) |
43 |
def podium(since, tokens): |
|
44 |
sincetime = datetime.fromtimestamp(since) |
|
| 1 | 45 |
token_list = tokens.split(",") |
|
32
1e47b1f9f42d
Added server communication in the client and corrected server code
veltr
parents:
6
diff
changeset
|
46 |
query_base = db.session.query(func.count(Tweet.id)).filter(Tweet.created_at >= sincetime) #@UndefinedVariable |
| 1 | 47 |
podium_res = {} |
48 |
for token in token_list: |
|
49 |
query = query_base.filter(Tweet.text.op('~*')(token)) #@UndefinedVariable |
|
50 |
podium_res[token] = query.scalar() |
|
51 |
res = { |
|
52 |
"podium" : podium_res, |
|
53 |
"total" : query_base.scalar() |
|
54 |
} |
|
55 |
return jsonpwrap(res) |
|
56 |