Recuperer user id d'une réponse

Résolu/Fermé
LucDanton - 26 déc. 2021 à 22:35
 LucDanton - 27 déc. 2021 à 21:28
Bonjour,

J'essaye d'utiliser Tweepy pour expérimenter un bot sur Twitter.
Je voudrais obtenir l'id d'un utilisateur. Dans la doc il y a cela:
Client.get_user(*, id, username, user_auth=False, expansions, tweet_fields, user_fields)


#Connexion
client = tweepy.Client(bearer_token= bearer_token, consumer_key= consumer_key,consumer_secret= consumer_secret,access_token= access_token,access_token_secret= access_token_secret)

#Obtention de l'id
screen_name='PerrySaylorWEB3'
user = client.get_user(username=screen_name)
print(user)

J'obtiens cela:
Response(data=<User id=1448190092275683343 name=Perry Saylor username=PerrySaylorWEB3>, includes={}, errors=[], meta={})
Comment puis je récupérer juste le User id?

Merci d'avance

6 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
26 déc. 2021 à 23:18
Bonjour,

Déjà.. quand tu postes du code sur le forum, tu dois utiliser les BALISES DE CODE.
Explications ( à lire entièrement !! ) disponibles ici :
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ensuite, dans la doc il semble y avoir un exemple
https://www.geeksforgeeks.org/python-tweepy-getting-the-id-of-a-user/
# import the module
import tweepy

# assign the values accordingly
consumer_key = ""
consumer_secret = ""
access_token = ""
access_token_secret = ""

# authorization of consumer key and consumer secret
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)

# set access to user's access key and access secret
auth.set_access_token(access_token, access_token_secret)

# calling the api
api = tweepy.API(auth)

# the screen name of the user
screen_name = "geeksforgeeks"

# fetching the user
user = api.get_user(screen_name)

# fetching the ID
ID = user.id_str

print("The ID of the user is : " + ID)


0
Merci pour ta réponse mais leur exemple ne fonctionne plus depuis la dernière MAJ.
Si je lance leur exemple avec
user = api.get_user(screen_name)

J'ai cet erreur
TypeError: get_user() takes 1 positional argument but 2 were given


Si je fais comme j'ai fait dans mon 1er message en ajoutant username=
user = api.get_user(username=screen_name)
, cette fois j'obtiens cela:
Unexpected parameter: username
et l'on me demande d'elever mon acces
tweepy.errors.Forbidden: 403 Forbidden
453 - You currently have Essential access which includes access to Twitter API v2 endpoints only. If you need access to this endpoint, you’ll need to apply for Elevated access via the Developer Portal. You can learn more here: https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api#v2-access-leve


Je n'arrive pas à utiliser l'API. Par contre avec le Client cela fonctionne mieux.
J'ai tenté de faire cela du coup:
#Follow
screen_name='PerrySaylorWEB3'
# fetching the user
user = client.get_user(username=screen_name)
print(user)
# fetching the ID
ID = user.id_str

print("The ID of the user is : " + ID)


J'obtiens bien un retour cette fois avec le print(user) mais le reste ne fonctionne pas
Response(data=<User id=1448190092275683343 name=Perry Saylor username=PerrySaylorWEB3>, includes={}, errors=[], meta={})
Traceback (most recent call last):
  File "/Users/Test.py", line 28, in <module>
    ID = user.id_str
AttributeError: 'Response' object has no attribute 'id_str'


D'ou ma question dans le premier message? Comment récupérer le user id?

Merci
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > LucDanton
27 déc. 2021 à 11:14
As tu essayé tout simplement
ID = user.id
0
Oui... J'obtiens cette erreur
AttributeError: 'Response' object has no attribute 'id'
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
27 déc. 2021 à 11:54
ah..
Je n'ai pas de quoi tester moi même .. mais :
Pourrais tu essayer de faire un print de user.Response
puis, si pas d'erreur, essayer un print de user.Response.data
puis, si pas d'erreur, essayer un print de user.Response.data.id
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
27 déc. 2021 à 13:39
Response est le type de la variable user.
Voir https://docs.tweepy.org/en/stable/client.html#response

moi je ferais plutôt:
print(type(user))
print (user.data)
print (type(user.data))
0
LucDanton > yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024
27 déc. 2021 à 14:00
type(user) donne <class 'tweepy.client.Response'>
user.data donne PerrySaylorWEB3
type(user.data) donne <class 'tweepy.user.User'>
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > LucDanton
27 déc. 2021 à 14:10
alors peut-être ainsi:
resp= api.get_user(screen_name)
user=resp.data
ID = user.id_str
print("The ID of the user is : " + ID)
0
le print user.Response donne:
AttributeError: 'Response' object has no attribute 'Response'
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
27 déc. 2021 à 12:20
bon ben là je ne sais pas...
dans la doc ils indiquent que ça retourne un objet "user" au format json... mais ton code ne semble pas correspondre...
N'ayant aucun moyen de tester .. je ne sais pas ...

Tu as utilisé quelle version de la lib ?
Ou as tu trouvé le code que tu as écrit ?
0
LucDanton > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
Modifié le 27 déc. 2021 à 14:08
Je n'arrive pas à trouver la version... quand je fais pip list il n'y a pas de tweety
J'ai fait python3 -m pip install tweepy

Pour le code c'est ici:
https://dev.to/twitterdev/a-comprehensive-guide-for-using-the-twitter-api-v2-using-tweepy-in-python-15d9
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
27 déc. 2021 à 12:47
bonjour,
pour contourner le problème, j'essaierais ceci:
rr=repr(user)
print("rr:",rr)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ca me donne cela:
rr: Response(data=<User id=1448190092275683343 name=Perry Saylor username=PerrySaylorWEB3>, includes={}, errors=[], meta={})
0
Afin d'obtenir l'user id il faut mettre cela:
print(user.data.id)
0