Exclude muted users from Streaming API

This commit is contained in:
Manuel Cortez 2021-07-04 09:15:04 -05:00
parent 37af722556
commit 8fe2f4c64d
2 changed files with 13 additions and 4 deletions

View File

@ -504,7 +504,7 @@ class Session(base.baseSession):
self.db["users"] = users self.db["users"] = users
def start_streaming(self): def start_streaming(self):
self.stream_listener = streaming.StreamListener(twitter_api=self.twitter, user=self.db["user_name"], user_id=self.db["user_id"]) self.stream_listener = streaming.StreamListener(twitter_api=self.twitter, user=self.db["user_name"], user_id=self.db["user_id"], muted_users=self.db["muted_users"])
self.stream = streaming.Stream(auth = self.auth, listener=self.stream_listener, chunk_size=1025) self.stream = streaming.Stream(auth = self.auth, listener=self.stream_listener, chunk_size=1025)
self.stream_thread = call_threaded(self.stream.filter, follow=self.stream_listener.users, stall_warnings=True) self.stream_thread = call_threaded(self.stream.filter, follow=self.stream_listener.users, stall_warnings=True)

View File

@ -14,14 +14,23 @@ log = logging.getLogger("sessions.twitter.streaming")
class StreamListener(tweepy.StreamListener): class StreamListener(tweepy.StreamListener):
def __init__(self, twitter_api, user, user_id, *args, **kwargs): def __init__(self, twitter_api, user, user_id, muted_users=[], *args, **kwargs):
super(StreamListener, self).__init__(*args, **kwargs) super(StreamListener, self).__init__(*args, **kwargs)
log.debug("Starting streaming listener for account {}".format(user))
self.started = False
self.users = []
self.api = twitter_api self.api = twitter_api
self.user = user self.user = user
self.user_id = user_id self.user_id = user_id
self.users = [str(id) for id in self.api.friends_ids()] friends = self.api.friends_ids()
log.debug("Retrieved {} friends to add to the streaming listener.".format(len(friends)))
self.users.append(str(self.user_id)) self.users.append(str(self.user_id))
log.debug("Started streaming object for user {}".format(self.user)) log.debug("Got {} muted users.".format(len(muted_users)))
for user in friends:
if user not in muted_users:
self.users.append(str(user))
self.started = True
log.debug("Streaming listener started with {} users to follow.".format(len(self.users)))
def on_connect(self): def on_connect(self):
pub.sendMessage("streamConnected", user=self.user) pub.sendMessage("streamConnected", user=self.user)