<?php
/**
 * این فایل باید توسط Cron Job اجرا شود تا همیشه کوکی تازه برای yt-dlp فراهم باشد.
 * مسیر پیشنهادی برای کرون‌جاب: هر 1 یا 2 ساعت یکبار
 */

class InstaCookieRefresher {
    private $username = 'vieramenu_com'; // نام کاربری اینستاگرام
    private $password = 'sKh@amiR@5698'; // رمز عبور
    private $cookiePath = './application/instacookies2.txt'; // مسیری که ربات از آن کپی می‌کند
    private $userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36';

    public function refresh() {
        // حذف کوکی قدیمی برای اطمینان از لاگین مجدد (اختیاری)
        // if (file_exists($this->cookiePath)) unlink($this->cookiePath);

        $ch = curl_init();
        
        // 1. دریافت صفحه اول برای CSRF
        curl_setopt($ch, CURLOPT_URL, "https://www.instagram.com/accounts/login/");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_COOKIEJAR, $this->cookiePath); // ذخیره کوکی در فرمت Netscape که yt-dlp می‌فهمد
        curl_setopt($ch, CURLOPT_USERAGENT, $this->userAgent);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        $response = curl_exec($ch);

        // استخراج CSRF از کوکی ذخیره شده
        $csrfToken = $this->getCsrfFromCookie();

        // 2. ارسال درخواست لاگین AJAX
        $loginUrl = "https://www.instagram.com/accounts/login/ajax/";
        $postData = [
            'username' => $this->username,
            'enc_password' => '#PWD_INSTAGRAM_BROWSER:0:' . time() . ':' . $this->password,
            'queryParams' => '{}',
            'optIntoOneTap' => 'false'
        ];

        curl_setopt($ch, CURLOPT_URL, $loginUrl);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            "X-CSRFToken: $csrfToken",
            "X-Requested-With: XMLHttpRequest",
            "Referer: https://www.instagram.com/accounts/login/"
        ]);

        $result = curl_exec($ch);
        $json = json_decode($result, true);

        if (isset($json['authenticated']) && $json['authenticated'] == true) {
            echo "✅ Cookies Refreshed Successfully.";
        } else {
            echo "❌ Login Failed: " . ($json['message'] ?? 'Unknown Error');
        }

        curl_close($ch);
    }

    private function getCsrfFromCookie() {
        if (!file_exists($this->cookiePath)) return '';
        $content = file_get_contents($this->cookiePath);
        if (preg_match('/csrftoken\s+([a-zA-Z0-9_-]+)/', $content, $matches)) {
            return $matches[1];
        }
        return '';
    }
}
    
// اجرا
$refresher = new InstaCookieRefresher();
$refresher->refresh();