import instaloader
import pandas as pd
from datetime import datetime
import os

# ۱. لیست آیدی پیج‌ها (بعداً می‌توانید آیدی‌های جدید را به این لیست اضافه کنید)
target_pages = [
    "zhino_beauty_clinic",
    "dr_amirzadeh",
    "dr_yazdani_org",
    "clinic_zibaie_adora"
]

def get_followers_data():
    # راه‌اندازی Instaloader
    L = instaloader.Instaloader()
    
    data = []
    today_date = datetime.now().strftime("%Y-%m-%d")
    
    print(f"[{today_date}] Fetching data...")

    for page in target_pages:
        try:
            # دریافت اطلاعات پروفایل
            profile = instaloader.Profile.from_username(L.context, page)
            followers = profile.followers
            
            data.append({
                "تاریخ": today_date,
                "آیدی پیج": page,
                "تعداد فالوور": followers
            })
            print(f"Success: {page} -> {followers} followers")
            
        except Exception as e:
            print(f"Error fetching {page}: {e}")

    return data

def process_and_save_to_excel(data, filename="instagram_stats.xlsx"):
    if not data:
        print("No data fetched. Exiting.")
        return

    # ۲. تبدیل داده‌ها به جدول (DataFrame)
    df_new = pd.DataFrame(data)

    # ۳. مرتب‌سازی بر اساس تعداد فالوور (از زیاد به کم) و ایجاد ستون رتبه
    df_new = df_new.sort_values(by="تعداد فالوور", ascending=False).reset_index(drop=True)
    df_new.index = df_new.index + 1  # شروع رتبه از ۱
    df_new.index.name = "رتبه"
    df_new = df_new.reset_index() # تبدیل ایندکس رتبه به یک ستون مجزا

    # ۴. ذخیره در اکسل (اگر فایل از قبل بود، به انتهای آن اضافه می‌شود)
    if os.path.exists(filename):
        try:
            # خواندن فایل قبلی
            df_existing = pd.read_excel(filename)
            # ترکیب داده‌های قدیم و جدید
            df_final = pd.concat([df_existing, df_new], ignore_index=True)
            df_final.to_excel(filename, index=False)
            print("Data appended to existing Excel file.")
        except Exception as e:
            print(f"Error updating Excel: {e}")
    else:
        # ساخت فایل جدید اگر وجود نداشت
        df_new.to_excel(filename, index=False)
        print("New Excel file created.")

if __name__ == "__main__":
    extracted_data = get_followers_data()
    process_and_save_to_excel(extracted_data)