from InstagramAPI import InstagramAPI
import json
import pandas as pd

# Usurio y contraseña.
username = ''
password = ''
userid = ''#'' https://www.instagram.com/foodyburger_uy/?__a=1

# Ingreso. Si es exitoso deberia dar mensaje de Login success!
igAPI = InstagramAPI(username, password)
igAPI.login()

# Obtengo datos de las personas a las que SIGO y me SIGUEN, tengo que pasar como parametro mi userId de IG.
igAPI.getUserFollowings(userid) 
resultado_seguidos = igAPI.LastJson

igAPI.getUserFollowers(userid) 
resultado_seguidores = igAPI.LastJson

# Recorro el array que tiene el resultado de la petición, y guardo en otro array solamente los nombres de usuario.
seguidos = [] 
for e in resultado_seguidos["users"]:
   seguidos.append({
                        'usuario' : e["username"], 
                        'nombre_completo' : e["full_name"]
                    })

seguidores = []
for e in resultado_seguidores["users"]:
   seguidores.append({
                        'usuario' : e["username"], 
                        'nombre_completo' : e["full_name"]
                    })

# Funcion que busca si el usuario existe.
def buscar_si_me_siguen( seguido, usuario):
    #Recorremos nuestro array de entradas
    for e in seguidores:
        if( usuario in seguidos ):
            return 'si'
        else:
            return 'no'
        
# Saber a quien sigo pero no me sigue y con quien nos seguimos mutuamente.
no_me_siguen = []
si_me_siguen = []
for e in resultado_seguidos["users"]:
    buscar_seguidor = buscar_si_me_siguen(seguidores, e)
    if (buscar_seguidor == "si"):
        si_me_siguen.append({
                            'usuario' : e["username"], 
                            'nombre_completo' : e["full_name"]
                            })
    else:
        no_me_siguen.append({
                            'usuario' : e["username"], 
                            'nombre_completo' : e["full_name"]
                            })

# Creamos nuestros DataFrames.
df_seguidores = pd.DataFrame(seguidores);
df_seguidos = pd.DataFrame(seguidos);
df_seguimos = pd.DataFrame(si_me_siguen);
df_nomesiguen = pd.DataFrame(no_me_siguen);

# Creamos el archivo excel.
excel = pd.ExcelWriter('Reporte de seguidores.xlsx')

# Insertamos nuestros DataFrames.
df_seguidores.to_excel(excel, 'Seguidores', index=False)
df_seguidos.to_excel(excel, 'Seguidos', index=False)
df_seguimos.to_excel(excel, 'Nos seguimos', index=False)
df_nomesiguen.to_excel(excel, 'Sigo, pero no me siguen', index=False)

excel.save()