Instagram-бот с большим количеством подписчиков - PullRequest
0 голосов
/ 30 марта 2020

Я создал простого python бота, который получает список подписчиков, ждет задержки, а затем сравнивает два списка и возвращает подписчиков, которые остановились, чтобы следовать за вами. Программа работает, но она не работает, когда у вас много подписчиков (на самом деле у меня 730 подписчиков, что не так много). Когда кто-то перестает следовать за вами, программа всегда печатает одно и то же имя (которое, я думаю, является последним пользователем, которого может получить бот). Кто-нибудь может мне помочь?

Вот код:

import requests
import json
from InstagramAPI import InstagramAPI
import time

username = input("Type your username: ")
password = getpass.getpass("Type your password: ")


try:
    username = int(username)
except:
     pass
try:
    username = float(username)
except:
    pass
while type(username) != type('str'):
    print("It looks like you typed an invalid username, please try again.")
    username = input("Type your username: ")
    try:
        username = int(username)
    except:
        pass
else:
    pass

api = InstagramAPI(username, password)
api.USER_AGENT = 'Instagram 10.34.0 Android (18/4.3; 320dpi; 720x1280; Xiaomi; HM lSW; armani; qcom; en_US)'

def get_self_profile_details():
    api.login()
    api.getSelfUsernameInfo()
    result = api.LastJson
    usernameinfo = result['user']['username']
    full_name = result['user']['full_name']
    followers = result['user']['follower_count']
    return usernameinfo, full_name, followers

def get_followers():
    followers_list = []
    userinitial = 0
    api.getTotalSelfFollowers()
    result = api.LastJson['users']
    for user in range(0, len(result)):
        finallist = result[userinitial]['username']
        followers_list.append(finallist)
        userinitial += 1
    return followers_list, result

def followers_differences(listbefore: list, listafter: list):
    unfollowers = list(set(listbefore) - set(listafter))
    return unfollowers


self_variables = get_self_profile_details()
print(f"""
Your data: 
- your username: {self_variables[0]}
- your full name: {self_variables[1]}
- number of your followers: {self_variables[2]}
""")




while True:
    for times in range(0, 3):
        list1 = get_followers()[0]
        time.sleep(300)
        list2 = get_followers()[0]
        unfollowers = followers_differences(list1, list2)
        if len(unfollowers) == 0:
            print('Nobody unfollowed you!')
        else:
            count = 0
            for people in range(0, len(unfollowers)):
                print(f"@{unfollowers[count]} unfollowed you!")
                file = open('unfollowers.txt', 'a')
                file.write(f'{unfollowers[count]}/n')
                file.close()
                count += 1


...