2016-06-29 10 views
0

Ich benutze Tweepy und ich möchte ein Skript erstellen, das diejenigen, die mir nicht folgen, ausfliegen würde. Ich habe das Gegenteil mit Leichtigkeit erstellt:Überprüfen Sie, ob ein Benutzer mir mit Tweepy folgt

for user in tweepy.Cursor(api.followers).items(): 
    if not user.following: 
     user.follow() 

Aber es scheint nicht eine Eigenschaft zu sein, halten, ob ein Benutzer mich zurück folgt oder nicht in api.friends.

Antwort

0

Ein Jahr später habe ich mich in der Notwendigkeit, dieses Problem zu lösen (wieder) gefunden. Dieses Mal habe ich etwas mehr Erfahrung in Python, so dass ich einen Ansatz finden konnte, der gut funktioniert.

Es wird nur ein API-Aufruf für jeweils 100 Benutzer benötigt. Dies ist die maximale Anzahl von Benutzern, die gleichzeitig mit der Methode _lookup_friendships abgefragt werden können. Nun, das, natürlich, die Folgen.

for page in tweepy.Cursor(api.friends, count=100).pages(): 
    user_ids = [user.id for user in page] 
    for relationship in api._lookup_friendships(user_ids): 
     if not relationship.is_followed_by: 
      logger.info('Unfollowing @%s (%d)', 
         relationship.screen_name, relationship.id) 
      try: 
       api.destroy_friendship(relationship.id) 
      except tweepy.error.TweepError: 
       logger.exception('Error unfollowing.') 
0

Sie können API.exists_friendship(user_a, user_b) verwenden. Er gibt true zurück, wenn user_auser_b folgt.

Referenz: http://docs.tweepy.org/en/v3.5.0/api.html#API.exists_friendship

+0

Aber das bedeutet eine API-Anfrage für jeden Benutzer, richtig? – monq

+0

Ja, ähnlich wie in Ihrem Beispiel. – User528491

+0

Soweit ich weiß (korrigieren Sie mich, wenn falsch) ein Cursor ruft so viele Benutzer wie der API-Aufruf auf einmal ermöglicht. – monq

Verwandte Themen