2015-10-14 2 views
2

Je commence juste à comprendre Python, et je veux commencer à l'utiliser avec API et autres. J'ai installé Tweepy, j'ai obtenu mes clés Twitter et j'ai suivi le processus d'installation sur leur site Web. Il allait bien jusqu'à ce que, eh bien, iciNe comprend pas l'erreur Tweepy

import tweepy 

auth = tweepy.OAuthHandler('qwertyuiop', 'asdfghjkl') 
auth.set_access_token('qazsecftgbhujmkolp', 'plokmjuhbgtfcdeszaq') 

api = tweepy.API(auth) 

user = tweepy.api.get_user('twitter') 

print user.screen_name 

(avec mes clés réelles, bien sûr)

Cela renvoie l'erreur

Traceback (most recent call last): 
    File "tweeter.py", line 8, in <module> 
    user = tweepy.api.get_user('twitter') 
    File "/home/jeremiah/.local/lib/python2.7/site-packages/tweepy/binder.py", line 243, in _call 
    return method.execute() 
    File "/home/jeremiah/.local/lib/python2.7/site-packages/tweepy/binder.py", line 189, in execute 
    raise TweepError('Failed to send request: %s' % e) 
tweepy.error.TweepError: Failed to send request: local variable 'auth' referenced before assignment 

Ce que je ne comprends pas. Définir auth est la première chose que je fais. En outre, cela est pris dès le début du cours d'introduction du site.

Il semble que tout va bien jusqu'à ce que le user = tweepy.api.get_user('twitter'). Si je prends ce + tout en dessous, ça va, ou si je le remplace par

public_tweets = api.home_timeline() 
for tweet in public_tweets: 
    print tweet.text 

ça va.

Alors qu'est-ce que c'est? Est-ce que Tweepy est vissée, est-ce que mon ordinateur est visqueux, ou est-ce que je manque quelque chose d'évident?

Merci pour toute aide

+0

Etes-vous sûr que c'est bien si vous sortez 'print user.screen_name'? On dirait que l'erreur est sur la ligne 'user = ...' – Claudiu

+1

Cependant l'erreur parle d'un objet 'auth' dans' binder.py', pas le vôtre. Probablement un problème, [voir ici] (https://github.com/tweepy/tweepy/blob/master/tweepy/binder.py#L173). – cdonts

+0

@Claudiu Yep, j'ai foiré. Édité. –

Répondre

1

Vous devriez être en mesure d'utiliser la méthode get_user du tweepy.API class (que vous avez attribué à votre nom de variable api).

Essayez:

user = api.get_user(id='__your__username__') # returns the user specified by id 

Ou:

user = api.me() # returns YOUR authenticated user object 

La raison pour laquelle vous devrez indiquer votre nom d'utilisateur dans les parenthèses, ou utiliser la méthode me() (au lieu du 'twitter' littéral (qui renvoie la objet utilisateur de @twitter parce que vous l'avez demandé pour obtenir que utilisateur!) est parce que le get_user method:

Retourne les informations sur l'utilisateur spécifié.

Paramètres:
id - Indique le nom d'ID ou de l'écran de l'utilisateur. Id_utilisateur - Spécifie l'ID de l'utilisateur.

Utile pour désamorcer lorsqu'un ID utilisateur valide est également un nom d'écran valide.

screen_name - Spécifie le nom d'écran de l'utilisateur. Utile pour désamorcer lorsqu'un nom d'écran valide est également un ID utilisateur.

En ce qui concerne votre code, notez la différence entre ce qui soulève une exception:

user = tweepy.api.get_user('twitter'). 

Et ce qui ne soulève pas une exception

public_tweets = api.home_timeline() '## NOT tweepy.api.home_timeline() 

Dans ce dernier (qui ne pas d'erreur) vous utilisez correctement votre variable api pour appeler la méthode home_timeline.

+0

Eh bien cela fonctionne. Mais juste en dessous, il décrit la méthode 'api.me'. Cela devrait retourner mes infos, donc je n'ai pas besoin de passer par tous ces cerceaux, mais ça ne marche toujours pas quand j'essaie 'user = api.me' alors je' print user'. –

+0

Est-ce que vous faites 'user = api.me' ou' user = api.me() '? –

+0

Wow. Toujours aussi simple. Je suppose que je suis trop fatigué pour faire une bonne réflexion. Merci d'avoir répondu de toute façon à mes questions stupides. –