Я создал простого 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