Jusqu'à la dernière fois, nous avons implémenté la classe Butler pour une recherche simple de tweets et la classe Tweet pour gérer les tweets. Cette fois, je voudrais implémenter la fonction pour rechercher User et la classe User dans la classe Butler.
Je vais d'abord mettre le code à la dernière fois.
tweet_butler.py
from . import config
from requests_oauthlib import OAuth1Session
import json
class Butler:
def __init__(self,setting = config):
self.api = OAuth1Session(setting.Consumer_Key, setting.Consumer_Secret_Key, setting.Access_Token, setting.Access_Secret_Token)
self.search_url = "https://api.twitter.com/1.1/search/tweets.json"
def search(self,word,count=10):
params = {"q":word,"count":count}
res = self.api.get(self.search_url, params = params)
if res.status_code == 200:
search_results = json.loads(res.text)
tweets = [Tweet(result) for result in search_results["statuses"]]
return tweets
class Tweet:
def __init__(self,tweet):
self.dict = tweet
self.tweet_id = tweet["id"]
self.user_id = tweet["user"]["id"]
self.user_name = tweet["user"]["screen_name"]
self.text = tweet["text"]
self.created_at = tweet["created_at"]
self.favorite_count = tweet["favorite_count"]
self.hashtags = tweet["entities"]["hashtags"]
self.symbols = tweet["entities"]["symbols"]
self.mention = tweet["entities"]["user_mentions"]
def get_text(self):
return self.text
Vous pouvez rechercher l'API simplement en envoyant une requête GET à une URL. Il semble y avoir les trois méthodes suivantes lors de la recherche d'utilisateurs. ・ Utilisateurs / recherche ・ Utilisateurs / recherche ・ Utilisateurs / spectacle la recherche consiste à rechercher les utilisateurs qui ont frappé un certain mot, show doit afficher un seul utilisateur avec le même identifiant et le même nom d'écran, la recherche est étendue à plusieurs personnes dans l'émission et elle est répertoriée dans id et screen_name. Peut être entré. Aucun d'entre eux n'est difficile à implémenter, mais cette fois, nous utiliserons d'abord show.
La première chose dont vous avez besoin est un jeton API. Cela a été expliqué la dernière fois, je vais donc l'omettre. Exploration avec Python et Twitter API 1 - Fonction de recherche simple
Vient ensuite l'URL de la ressource pour les utilisateurs / show. https://api.twitter.com/1.1/users/show.json Vous devez également connaître les fichiers json que vous lancez dans cette API à implémenter.
{
"Name": "name",
"user_id": "id",
"screen_name": "screen_name",
"include_entities": "include_entities",
}
Les quatre éléments ci-dessus sont les éléments qui peuvent être utilisés comme entrée pour le fichier json. Parmi ceux-ci, l'un des "Name, user_id, screen_name" est toujours requis.
Le reste est la mise en œuvre. Ce n'est pas très différent de la dernière fois. Implémenter en tant que méthode de la classe Butler. Butler.get_user_by_id() Tout d'abord, c'est une méthode pour obtenir l'utilisateur à partir de l'ID en utilisant showAPI.
tweet_butler.py
class Butler:
def __init__(self, setting = config):
self.get_user_url = "https://api.twitter.com/1.1/users/show.json"
:
:
def get_user_by_id(self, id):
params = {"user_id":user_id}
res = self.api.get(self.get_user_url, params = params)
if res.status_code == 200:
search_results = json.loads(res.text)
else:
assert False, "{} error happen in get_user_by_id method".format(res.status_code)
return User(search_results)
Butler.get_user_by_name
Vient ensuite la méthode pour obtenir l'utilisateur de screen_name
. L'API utilisée est la même
tweet_butler.py
:
:
def get_user_by_name(self,name):
params = "Name":name}
res = self.api.get(self.get_user_url, params =params)
if res.status_code == 200:
search_results = json.loads(res.text)
else:
assert False, "{} error happen in get_user_by_name method".format(res.status_code)
return User(search_results)
Cette fois, je ne mettrai pas grand chose sur la classe User.
tweet_butler.py
class User:
def __init__(self, user_dict):
self.dict = user_dict
self.id = user_dict["id"]
self.name = user_dict["name"]
self.screen_name = user_dict["screen_name"]
Je suis désolé pour l'omission.
Il semble que l'objet utilisateur soit inclus dans l'objet tweet renvoyé dans la réponse, alors ajoutez une nouvelle méthode get_user en tant que méthode de la classe Tweet. J'ai également changé certains des noms de variables de classe.
tweet_butler.py
class Tweet:
def __init__(self,tweet):
self.dict = tweet
self.id = tweet["id"]
self.user_id = tweet["user"]["id"]
self.user_name = tweet["user"]["screen_name"]
self.text = tweet["text"]
self.created_at = tweet["created_at"]
self.favorite_count = tweet["favorite_count"]
self.hashtags = tweet["entities"]["hashtags"]
self.symbols = tweet["entities"]["symbols"]
self.mention = tweet["entities"]["user_mentions"]
def get_text(self):
return self.text
##########La partie ci-dessous vient d'être ajoutée###########
def get_user(self):
return User(self.dict["user"])
Ensuite, je voudrais permettre la recherche d'utilisateurs à l'aide de l'API users / search et pouvoir récupérer les tweets d'un utilisateur spécifique.
Obtenez des tweets d'utilisateurs spécifiques sur Twitter twitter developer
Recommended Posts