/
App.py
70 lines (50 loc) · 2.1 KB
/
App.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
from flask import Flask,render_template,sessions,redirect,request,url_for,g
from twitter_utils import get_request_token,get_oauth_verifier_url,get_access_token
from user import User
from database import Database
app = Flask(__name__)
app.secret_key='XXXX'
Database.initialise(database='postgres',user='postgres',password='postgre_sql',host='localhost')
@app.before_request
def load_user():
if 'screen_name' in sessions:
g.user =User.load_from_database(sessions['screen_name'])
@app.route('/')
def homepage():
return render_template('home.html')
@app.route('/login/twitter')
def twitter_login():
if 'screen_name' in sessions:
return redirect(url_for('profile'))
request_token = get_request_token()
sessions['request_token'] = request_token
return redirect(get_oauth_verifier_url(request_token))
@app.route('/logout')
def logout():
sessions.clear()
return redirect(url_for('homepage'))
@app.route('/auth/twitter')
def twitter_auth():
oauth_verifier = request.args.get('oauth_verifier')
access_token = get_request_token(sessions['request_token'],oauth_verifier)
user = User.load_from_database(access_token['screen_name'])
if not user:
user = User(None,access_token['sreen_name'],access_token['oauth_token'],access_token['oauth_token_secret'])
user.save_to_database()
sessions['screen_name'] = user.screen_name
return redirect(url_for('profile'))
@app.route('/profile')
def profile():
return render_template('profile.html', user = g.user)
@app.route('/search')
def search():
query = request.args.get('q')
tweets = g.user.twitter_request('https://api.twitter.com/1.1/search/tweets.json?q={}'.format(query))
tweet_texts = [{'tweet':tweet['text'],'label':'neutral'} for tweet in tweets['statuses']]
for tweet in tweet_texts:
r = request.post('http://text-processing.com/api/sentiment/', data = {'tweet':tweet['tweet']})
json_response = r.json()
label = json_response['label']
tweet['label'] = label
return render_template('search.html',content = tweet_texts)
app.run(port=4995,debug=True)