-
Notifications
You must be signed in to change notification settings - Fork 0
/
twitter_db.py
53 lines (42 loc) · 1.4 KB
/
twitter_db.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
# -*- coding: utf-8 -*-
# easy_install peewee
from peewee import *
import dateutil.parser
import datetime
import time
db = SqliteDatabase('twitter_stream.sqlite')
class Twitte(Model):
createAt = DateTimeField(index=True)
idStr = CharField(index=True)
contents = CharField()
class Meta:
database = db
def AppendTwitte(item):
row = Twitte(createAt=dateutil.parser.parse(item['created_at']),
idStr=item['id_str'],
contents=item['text'])
row.save()
def GetTwitteHistogram(start_date, end_date, interval_sec):
start_date = dateutil.parser.parse(start_date)
end_date = dateutil.parser.parse(end_date)
interval_sec = int(interval_sec)
ret = []
tmpdate = start_date
while tmpdate < end_date:
data = (
tmpdate.strftime('%Y-%m-%d %H:%M:%S'),
Twitte.select().where(
(Twitte.createAt >= tmpdate) &
(Twitte.createAt < tmpdate + datetime.timedelta(seconds=interval_sec))
).count()
)
ret.append(data)
tmpdate = tmpdate + datetime.timedelta(seconds=interval_sec)
return ret
def GetTwittes(start_date, end_date):
start_date = dateutil.parser.parse(start_date)
end_date = dateutil.parser.parse(end_date)
return Twitte.select().where(
(Twitte.createAt >= start_date) &
(Twitte.createAt < end_date)
)