2016-06-29 2 views
0

Я использую Tweepy, и я хочу создать сценарий, который отменит список тех, кто не последует за мной. Я создал противоположное с легкостью:Проверьте, подходит ли пользователь для меня с помощью Tweepy

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

Но, похоже, не является собственностью холдинга, является ли пользователь после меня обратно или нет в api.friends.

ответ

0

Через год я нашел себя в необходимости решения этой проблемы (опять же). На этот раз я немного более опытен в Python, чтобы найти подходящий подход.

Он нужен только для вызова API для каждых 100 пользователей, что является максимальным количеством пользователей, которые могут быть запрошены с помощью метода _lookup_friendships сразу. Ну, это, + unfollows, конечно.

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

Вы можете использовать API.exists_friendship(user_a, user_b). Он возвращает значение true, если user_a следует user_b.

Ссылка: http://docs.tweepy.org/en/v3.5.0/api.html#API.exists_friendship

+0

Но это означает один запрос API для каждого пользователя, не так ли? – monq

+0

Да, очень похоже на то, как вы это делаете в своем примере. – User528491

+0

Насколько я знаю (исправьте меня, если не так), курсор получает столько пользователей, сколько позволяет API-вызов. – monq

Смежные вопросы