Je lis souvent des bandes dessinées de puériculture sur Twitter, C'est ennuyeux de voir des tweets autres que des dessins animés sur la chronologie, alors Seuls les tweets de manga (= image) sont acquis à l'aide de l'API Twitter.
En faisant cela, si vous affichez votre chronologie, vous ne pouvez afficher que les tweets de l'image à la fois.
API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET ont été obtenus en se référant au site suivant. Explication détaillée de la phrase d'exemple de l'application d'utilisation de l'API Twitter version 2020 jusqu'à l'acquisition de la clé API
python
twitter = OAuth1Session(API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
Tout d'abord, obtenez le nom d'utilisateur (nom d'écran pour être exact) de l'utilisateur que vous suivez. Le point de terminaison utilise https://api.twitter.com/1.1/friends/list.json. Jusqu'à 200 personnes semblent être des limites d'API. Spécifiez votre propre nom_écran pour l'argument nom_écran. (Vous pouvez également l'obtenir avec le pseudonyme d'une autre personne)
get_follow_screen_name
def get_follow_screen_name(screen_name):
    #Préparez une liste vide
    follow_list = []
    #Authentification
    twitter = OAuth1Session(API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
    #Point final d'acquisition
    url = "https://api.twitter.com/1.1/friends/list.json"
    #Paramètres
    params = {"screen_name": screen_name, "count": 200}
    #demande
    res = twitter.get(url, params=params)
    if res.status_code == 200:
        result_json = json.loads(res.text)
        #Ajouter des abonnés à la liste
        for i in range(0, len(result_json["users"]), 1):
            follow_list.append(result_json["users"][i]["screen_name"])
        #Renvoie une liste
        return follow_list
    else:
        return None
Utilisez le nom d'écran de chaque utilisateur obtenu en 1 pour obtenir la chronologie et la renvoyer au format JSON. Je veux les derniers tweets cette fois, alors j'ai mis count = 1.
get_user_timeline
def get_user_timeline(screen_name):
    #Processus d'authentification
    twitter = OAuth1Session(API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
    #Point final d'acquisition de la chronologie
    url = "https://api.twitter.com/1.1/statuses/user_timeline.json"
    #Paramètres
    params = {
        "count": 1,
        "screen_name": screen_name,
        "include_entities": True,
        "exclude_replies": False,
        "include_rts": False,
    }
    #Obtenir la liste chronologique de la réponse
    res = twitter.get(url, params=params)
    if res.status_code == 200:
        return json.loads(res.text)
    else:
        return None
Tout d'abord, créez le fichier JSON enregistré en 2 dans la classe suivante.
python
class Tweet:
    def __init__(self, json_file):
        self.created_at = json_file[0]["created_at"]
        self.tweet_id = json_file[0]["id"]
        self.text = json_file[0]["text"]
        self.user_name = json_file[0]["user"]["name"]
        self.user_screen_name = json_file[0]["user"]["screen_name"]
        self.user_mention = json_file[0]["entities"]["user_mentions"]
        self.image_urls_list = []
        #S'il y a un fichier joint
        if "extended_entities" in json_file[0]:
            self.media_number = len(json_file[0]["extended_entities"]["media"])
            self.content_type = json_file[0]["extended_entities"]["media"][0]["type"]
            for i in range(0, self.media_number, 1):
                self.image_urls_list.append(
                    json_file[0]["extended_entities"]["media"][i]["media_url"]
                )
        else:
            self.media_number = 0
            self.content_type = ""
Regardez self.media_number = len (json_file [0] ["extended_entities"] ["media"]) Distinguer si une image a été publiée.
is_content_type
def is_content_type(obj_tweet, expect_type):
    if obj_tweet.content_type == expect_type:
        return True
    else:
        return False
Si l'image a été publiée, appuyez sur l'API comme indiqué ci-dessous pour aimer et retweeter. Tout ce que vous avez à faire est de spécifier l'ID du tweet.
push_favorite
def push_favorite(tweet_id):
    #Authentification
    twitter = OAuth1Session(API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
    #demande
    url = "https://api.twitter.com/1.1/favorites/create.json"
    params = {"id": tweet_id}
    req = twitter.post(url, params=params)
    req_json = json.loads(req.text)
    if req.status_code == 200:
        return True
    #Si vous l'avez déjà aimé
    elif req.status_code == 403 and req_json["errors"][0]["code"] == 139:
        return True
    else:
        return False
retweet
def retweet(tweetId):
    twitter = OAuth1Session(API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
    url = "https://api.twitter.com/1.1/statuses/retweet/%d.json" % tweetId
    res = twitter.post(url)
    res_json = json.loads(res.text)
    if res.status_code == 200:
        return True
    #Déjà retweeté
    elif res.status_code == 403 and res_json["errors"][0]["code"] == 327:
        return True
    else:
        return False
        Recommended Posts