-
Notifications
You must be signed in to change notification settings - Fork 0
/
analysis.py
45 lines (37 loc) · 1.53 KB
/
analysis.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
import math
import tweepy
from weather.map.models import Tweets
from weather.map.models import Region
from weather.map.models import Weather
from weather.map.models import Stats
#Given a region, goes through all the tweets of that region and figures out a happiness ratio
def analyze(r): # r is the region
#weather analysis
tot = 0
weatherlist = Weather.objects.filter(region = r)
tot += math.fabs((weatherlist.all()[0].temperature - 273.5) - 23)/100
#tweets analysis
happy = 0
sad = 0
rt = 0
# for each region, go through the tweets, add to happy and sad
tweetlist = Tweets.objects.filter(region = r)
for x in range(1, len(tweetlist.all())):
happy = happy + tweetparser(tweetlist.all()[x].tweet, 'happy')
happy = happy + tweetparser(tweetlist.all()[x].tweet, ':)')
happy = happy + tweetparser(tweetlist.all()[x].tweet, 'excite')
happy = happy + tweetparser(tweetlist.all()[x].tweet, 'love')
sad = sad + tweetparser(tweetlist.all()[x].tweet, 'sad')
sad = sad + tweetparser(tweetlist.all()[x].tweet, 'dread')
sad = sad + tweetparser(tweetlist.all()[x].tweet, ':(')
sad = sad + tweetparser(tweetlist.all()[x].tweet, 'depress')
if sad != 0:
rt = happy/sad
s = Stats.objects.create(region = r, ratio = rt, trating = tot)
s.save()
def tweetparser(text, word): #how many times does word appear in text?
c = text.find(word)
if (c>=0):
return 1 + tweetparser(text[(c + len(word)):], word)
else:
return 0;