улучшен код для поиска подписчиков подписчиков с помощью twitter API

#python #twitter

#python #Twitter

Вопрос:

Мне нужна помощь в этом:

Я создал этот код на python, но я не нахожу способа улучшить его и сделать короче, поскольку некоторые шаги повторяются. Это то, что у меня получилось на данный момент. Что я пытаюсь сделать, так это сначала получить подписчиков из списка ранних пользователей, затем получить подписчиков подписчиков и проделать тот же шаг еще три раза.

 early_adopters = ['user_ID_1', 'user_ID_2']

users_follower = [] # list of every followers from early adopters 
follower_list = [] # list of pairs of users (early_apdoter, follower)

for usr in early_adopters:
  for user in tweepy.Cursor(api.followers, user_id = usr).items(3):
    if user.id not in early_adopters:
      users_follower.append(user.id_str)
      follower_list.append((usr,user.id_str))


users_follower_S1 = random.choices(users_follower, k=3) # sample of user from the first surface follower_list_search
follower_list_1 = []  #list of pair of followers of followers 
s2_follower_list = [] # list of pairs of users (early_apdoter, follower) 

for usr_s1 in users_follower_S1:
  for user in tweepy.Cursor(api.followers, user_id = usr_s1).items(3):
    if user.id_str not in follower_list and usr_s1 not in early_adopters:
      follower_list_1.append(user.id_str)
      s2_follower_list.append((usr_s1, user.id_str))


users_follower_S2 = random.choices(follower_list_1, k=3) # Repeat the same process above but for the second surface 
follower_list_2 = []
s3_follower_list = [] 

for usr_s2 in users_follower_S2:
  for user in tweepy.Cursor(api.followers, user_id = usr_s2).items(3):
    if user.id_str not in follower_list and usr_s2 not in early_adopters:
      follower_list_2.append(user.id_str)
      s3_follower_list.append((usr_s2, user.id_str))


users_follower_S3 = random.choices(follower_list_2, k=3) # Repeat the same process above but for the second surface 
follower_list_3 = []
s4_follower_list = [] 

for usr_s3 in users_follower_S3:
  for user in tweepy.Cursor(api.followers, user_id = usr_s3).items(3):
    if user.id_str not in follower_list and usr_s3 not in early_adopters:
      follower_list_3.append(user.id_str)
      s4_follower_list.append((usr_s3, user.id_str))
  

Заранее спасибо!!

Ответ №1:

Возможно, обернуть повторяющийся код в функцию, например:

 def getFollowers(users)
    followers = []
    follower_pairs = []

    for usr in users:
      for user in tweepy.Cursor(api.followers, user_id = usr).items(3):
        if user.id not in users and user.id not in early_adopters:
          followers.append(user.id_str)
          follower_pairs.append((usr,user.id_str))

    return (followers, follower_pairs)
  

Пример использования:

 early_adopters = ['user_ID_1', 'user_ID_2']

users_follower, follower_list = getFollowers(early_adopters)
  

Возможно, я чего-то не понимаю в вашей логике, но это мое общее предложение.

Комментарии:

1. Спасибо за ваше время. Я думаю, что здесь мы просто получаем подписчиков из списка, но нам все еще не хватает подписчика из подписчиков

2. @sarandonga2912 Для «второго раунда», я полагаю, вы можете вызвать, users_follower2, follower_list2 = getFollowers(users_follower) где аргумент users_follower является результатом «первого раунда». Имеет смысл?

3. Да, это имеет смысл. Спасибо!