-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathrunListener.py
More file actions
executable file
·54 lines (42 loc) · 1.52 KB
/
runListener.py
File metadata and controls
executable file
·54 lines (42 loc) · 1.52 KB
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
#!./venv/bin/python
import json
import tweepy
import os
import logging
from lib.shared import base_folder, tweetsFetchSettings
from lib.twitter_auth import get_auth_user
from lib.tweets_base import writeTweetToFolder
from lib.TweetForest import TweetForest
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(message)s",
handlers=[
logging.FileHandler(os.path.join(base_folder, 'log/listener.log')),
logging.StreamHandler()
]
)
searchString = tweetsFetchSettings['listen']
def update():
forest = TweetForest.fromFolder(tweetsFetchSettings['folder'])
forest.saveApiJson(tweetsFetchSettings['file'])
class DecarbnowStreamListener(tweepy.StreamListener):
def on_status(self, tweet):
id = tweet._json['id']
logging.info('Listener got new tweet: {}'.format(id))
writeTweetToFolder(tweet._json, tweetsFetchSettings['folder'])
update()
def on_error(self, status_code):
logging.warning('Listener got error, status code: {}'.format(status_code))
return True
logging.info('Init Listener:')
logging.info(' - Tweets Folder: \'{}\''.format(tweetsFetchSettings['folder']))
logging.info(' - Search String: \'{}\''.format(searchString))
listener = DecarbnowStreamListener()
stream = tweepy.Stream(auth = get_auth_user(), listener = listener, tweet_mode = 'extended')
logging.info('Init Tweets API File ...')
update()
logging.info('Start Listener ...')
try:
stream.filter(track=[searchString])
except KeyboardInterrupt:
pass