1 #!/usr/bin/env python |
1 #!/usr/bin/env python |
2 # -*- coding: utf-8 -*- |
2 # -*- coding: utf-8 -*- |
3 |
3 |
4 from datetime import datetime, timedelta |
|
5 from flask import Response, request #@UnresolvedImport |
4 from flask import Response, request #@UnresolvedImport |
6 from flaskext.sqlalchemy import get_debug_queries |
5 from flaskext.sqlalchemy import get_debug_queries |
7 from iri_tweet.models import TweetSource, Tweet |
6 from iri_tweet.models import TweetSource, Tweet |
8 from pyrfc3339.generator import generate |
7 from sqlalchemy import func #@UnresolvedImport |
9 from sqlalchemy import func, desc #@UnresolvedImport |
8 from tweetgserver import app, db |
10 from sqlalchemy.orm import joinedload |
9 from datetime import datetime |
11 from tweetgserver import app, db, cache |
|
12 import pytz |
|
13 import simplejson as json #@UnresolvedImport |
10 import simplejson as json #@UnresolvedImport |
14 import re |
|
15 import math |
|
16 |
11 |
17 def jsonpwrap(resobj): |
12 def jsonpwrap(resobj): |
18 resp_str = json.dumps(resobj) |
13 resp_str = json.dumps(resobj) |
19 callback_param = request.args.get("callback") |
14 callback_param = request.args.get("callback") |
20 if callback_param: |
15 if callback_param: |
28 def index(): |
23 def index(): |
29 query = db.session.query(func.count(TweetSource.id)) #@UndefinedVariable |
24 query = db.session.query(func.count(TweetSource.id)) #@UndefinedVariable |
30 ts_list_count = query.scalar() |
25 ts_list_count = query.scalar() |
31 return 'Nb of tweets ' + str(ts_list_count) |
26 return 'Nb of tweets ' + str(ts_list_count) |
32 |
27 |
33 @app.route('/total', methods=['GET']) |
28 @app.route('/total/<int:since>', methods=['GET']) |
34 def total(): |
29 def total(since): |
35 query = db.session.query(func.count(TweetSource.id)) #@UndefinedVariable |
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 |
36 ts_list_count = query.scalar() |
34 ts_list_count = query.scalar() |
37 return jsonpwrap({"total":ts_list_count}) |
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) |
38 |
41 |
39 @app.route('/podium/<tokens>', methods=['GET']) |
42 @app.route('/podium/<int:since>/<tokens>', methods=['GET']) |
40 def podium(tokens): |
43 def podium(since, tokens): |
|
44 sincetime = datetime.fromtimestamp(since) |
41 token_list = tokens.split(",") |
45 token_list = tokens.split(",") |
42 query_base = db.session.query(func.count(Tweet.id)) #@UndefinedVariable |
46 query_base = db.session.query(func.count(Tweet.id)) #@UndefinedVariable |
43 podium_res = {} |
47 podium_res = {} |
44 for token in token_list: |
48 for token in token_list: |
45 query = query_base.filter(Tweet.text.op('~*')(token)) #@UndefinedVariable |
49 query = query_base.filter(Tweet.text.op('~*')(token)) #@UndefinedVariable |