[PYTHON] Recevez uniquement des tweets d'images sur Twitter

introduction

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.

Flux de traitement

  1. Obtenez les utilisateurs que vous suivez (API Twitter)
  2. Obtenez la chronologie de chaque utilisateur (API Twitter)
  3. Juger de la présence ou de l'absence d'une image dans le contenu du tweet
  4. Aimer et retweeter avec des images (API Twitter)

En faisant cela, si vous affichez votre chronologie, vous ne pouvez afficher que les tweets de l'image à la fois.

la mise en oeuvre

Authentification API Twitter

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)

1. Obtenez les utilisateurs que vous suivez

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

2. Obtenez la chronologie de chaque utilisateur

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

3. Juger de la présence ou de l'absence d'une image dans le contenu du tweet

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

4. Aimez et retweetez ceux avec des images

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

Recevez uniquement des tweets d'images sur Twitter
Obtenez des informations sur les retards sur Twitter et tweet
Obtenez des signets Twitter sur CentOS en utilisant Selenium
Programme pour obtenir les images préférées de Twitter
Obtenez des images d'utilisateurs spécifiques sur Twitter
twitter avec python3
Obtenir les données utilisateur Twitter
Recevez de nombreux tweets Twitter à la fois
Enregistrer les tweets contenant des mots-clés spécifiques sur Twitter au format CSV
Recevez des tweets avec Tweepy
Obtenez des tweets Twitter, des followers, des followers, des likes, avec urllib et beautifulSoup
Je reçois "trop tôt pour créer une image" sur tkinter
J'ai analysé les tweets sur le nouveau virus corona publiés sur Twitter
Un client de publication Twitter stérile qui ne sauvegarde que vos tweets
Obtenez la chronologie Twitter avec Python
Messages Twitter dans Python 3 etc.
Obtenez des fonctionnalités d'image avec OpenCV
Rechercher des tweets Twitter avec Python
Créez un nuage de mots avec uniquement des mots positifs / négatifs sur Twitter
J'ai analysé les tweets sur le nouveau virus corona publiés sur Twitter, partie 2
J'ai vérifié l'image de l'Université des sciences sur Twitter avec Word2Vec.