Also zuerst, ich merke, es gibt eine Reihe von Fragen in Bezug auf die Handhabung der Twitch Rate Limits. Ich habe keine Ahnung warum, aber keiner von denen, die ich bisher gefunden habe, funktioniert für mich.tweepy wait_on_rate_limit funktioniert nicht
Ich benutze Tweepy. Ich versuche, eine Liste aller Anhänger der Anhänger eines Benutzers zu bekommen. Wie zu erwarten ist, kann ich aufgrund der Tarifgrenzen von Twitter nicht alles auf einmal abschreiben. Ich habe Tweepy v 3.5 installiert und verweise damit auf http://docs.tweepy.org/en/v3.5.0/api.html. Um die Liste der Nachfolger des ursprünglichen Benutzer zu erhalten die ich benutze:
auth = tweepy.OAuthHandler(consumer_key,consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tweepy.API(auth)
followerIDs = []
for page in tweepy.Cursor(api.followers_ids, screen_name=originatingUser, wait_on_rate_limit = True, wait_on_rate_limit_notify = True).pages():
followerIDs.extend(page)
Anhänger = api.lookup_users (Nachfolger)
Dies funktioniert ein für ein bisschen, aber schnell verwandelt sich in:
tweepy.error.TweepError: [{u'message': u'Rate limit exceeded', u'code': 88}]
Meine Theorie, würde dann die Anhänger jedes Benutzers für jede FollowerID mit etwas wie diesem abrufen:
Das andere Problem, das ich habe, ist, wenn ich versuche, die Benutzernamen zu suchen. Dazu Es die Grouper Funktion von itertools verwenden, um die Anhänger zu brechen in Gruppen von 100 (api.lookup_users nur 100 ids zu einer Zeit annehmen) und
followerIDs = grouper(followerIDs,100)
for followerGroup in followerIDs:
followerGroup=filter(None, followerGroup)
followers = api.lookup_users(followerGroup,wait_on_rate_limit = True)
for follower in followers:
print (originatingUser + ", " + str(follower.screen_name))
verwenden, die einen anderen Fehler bekommt, nämlich:
TypeError: lookup_users() got an unexpected keyword argument 'wait_on_rate_limit'
die ich verwirrend finde, weil die tweepy api suggests das ein akzeptiertes Argument sein sollte.
Irgendwelche Ideen, was ich falsch mache?
Cheers Ben.
Nun, ja. Ich hatte eher gehofft, dass etwas mit der "wait_on_rate_limit" -Sache nicht stimmte. Es wäre eine viel mehr ... elegante Lösung. Dies scheint jedoch der einzige Weg zu sein, dies im Moment zu tun. – Ben
Klingt nicht nach einem vernünftigen Ansatz für mich - "Wenn eine Anwendung die Ratengrenzen missbraucht, wird sie auf die schwarze Liste gesetzt. Blacklist-Apps können keine Antwort von der Twitter-API erhalten – geotheory