Salut à tous,

Dans le cadre d'un stage j'ai créer un bot sur twitter qui retweet des tweets comportant certains mots clés définit par une variable d’environnement. Jusque là tout va bien

Cependant je me suis rendu compte que parfois le bot retweet d'autres bots ou des tweets d'utilisateurs pas vraiment utiles. Pour régler ce problème j'ai créer une seconde variable d'environnement dans laquelle je rentre le noms des utilisateurs à ne pas retweeter. C'est là qu'on arrive vers le coeur du problème.

Ce mécanisme ne semble pas fonctionner C'est pour sa que je viens vers vous, j'ai penser que vous pourriez m'aider à résoudre ce petit soucis.

Le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
from tweepy.streaming import StreamListener
from tweepy import OAuthHandler, API
from tweepy import Stream
import json
import logging
import warnings
import time
from pprint import pprint
import os
 
warnings.filterwarnings("ignore")
 
access_token = "8673840*******************AUCDVXy5lSB53"
access_token_secret = "aFfaG*******************MhUxiTRhC9VIx7PgD"
consumer_key = "sd3K*****************DatUeF3"
consumer_secret = "q*******************************sSFxvrKPESC5"
 
auth_handler = OAuthHandler(consumer_key, consumer_secret)
auth_handler.set_access_token(access_token, access_token_secret)
 
twitter_client = API(auth_handler)
 
logging.getLogger("main").setLevel(logging.INFO)
 
AVOID = os.environ["WORDS"]
 
KEYWORDS = AVOID.split()
 
USERS = os.environ["NOPE"]
 
NORT = NOPE.split()
 
class PyStreamListener(StreamListener):
    def on_data(self, data):
        tweet = json.loads(data)
        try:
            publish = True
            for word in KEYWORDS:
                if word in tweet['text'].lower():
                    logging.info("SKIPPED FOR {}".format(word))
                    publish = False
 
            for user in NORT:
                publish = False
 
            if tweet.get('lang') and tweet.get('lang') != 'en':
                publish = False
 
            if publish:
                twitter_client.retweet(tweet['id'])
                logging.debug("RT: {}".format(tweet['text']))
                time.sleep(60)
 
        except Exception as ex:
            logging.error(ex)
 
        return True
 
    def on_error(self, status):
        print(status)
 
 
if __name__ == '__main__':
    listener = PyStreamListener()
    stream = Stream(auth_handler, listener)
    stream.filter(track=KEYWORDS)
Je sais que sa doit être trois fois rien mais je cherche depuis ce matin et je ne trouve pas la solution à mon problème :/

Merci d'avance pour votre aide