forked from Jefferson-Henrique/GetOldTweets-python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCincinnatiProjectDaily.py
86 lines (65 loc) · 2.51 KB
/
CincinnatiProjectDaily.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# -*- coding: utf-8 -*-
import sys, csv, codecs
import DuoLogger
import emailHandler
from datetime import date, timedelta, datetime
import time
if sys.version_info[0] < 3:
import got
else:
import got3 as got
def main_loop(from_date, until_date):
while True:
if main(argv[0], argv[1]) == 0:
break
def main(from_date, until_date):
try:
tweetCriteria = got.manager.TweetCriteria()
outputFileName = "cincinnati_tweets_%s_%s.csv" % (from_date, until_date)
logFileName = "cincinnati_tweets_%s_%s.output.txt" % (from_date, until_date)
sys.stdout = DuoLogger.Logger(logFileName)
tweetCriteria.maxTweets = int(100000000)
tweetCriteria.near = "Cincinnati"
tweetCriteria.within = "15mi"
tweetCriteria.since = from_date
tweetCriteria.until = until_date
csvfile = open(outputFileName, "w+", encoding="utf-8")
csvwriter = csv.writer(csvfile)
csvwriter.writerow(
['username', 'date', 'retweets', 'favorites', 'text', 'geo', 'mentions', 'hashtags', 'id', 'permalink'])
print('Searching...\n')
def receiveBuffer(tweets):
for t in tweets:
csvwriter.writerow(
[t.username, t.date.strftime("%Y-%m-%d %H:%M"), t.retweets, t.favorites, t.text, t.geo, t.mentions,
t.hashtags, t.id, t.permalink])
csvfile.flush()
sys.stdout.flush()
print('More %d saved on file...\n' % len(tweets))
got.manager.TweetManager.getTweets(tweetCriteria, receiveBuffer)
ret = 0
except:
print('Failed. Retrying...')
ret = 1
finally:
csvfile.close()
print('Done. Output file generated "%s".' % outputFileName)
sys.stdout.flush()
emailHandler.send_email(outputFileName, outputFileName, outputFileName)
emailHandler.send_email(logFileName, logFileName, logFileName)
return ret
if __name__ == '__main__':
argv = sys.argv[1:]
if len(argv) == 0:
for i in range(0, 365):
# sleep until 2AM
t = datetime.today()
future = datetime(t.year, t.month, t.day, 2, 0)
if t.hour >= 2:
future += timedelta(days=1)
time.sleep((future - t).seconds)
now = date.today() - timedelta(1)
yesterday = date.today() - timedelta(2)
result = main(yesterday.strftime("%Y-%m-%d"), now.strftime("%Y-%m-%d"))
else:
result = main(argv[0], argv[1])