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