خليه يدخل الاميل والباسورد الموجودين في ملف الtxt اللي اسمه users 
import os
import random
import string
import time
from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pyautogui
import pygetwindow as gw  # مكتبة للتحكم في نوافذ النظام

# ضبط pyautogui لإيقاف الأمان (للسماح بحركات الماوس السريعة)
pyautogui.FAILSAFE = False

# دالة لتوليد اسم عشوائي للبروفايل
def generate_random_profile_name(length=8):
    return ''.join(random.choices(string.ascii_letters + string.digits, k=length))

# إنشاء اسم بروفايل عشوائي
profile_name = generate_random_profile_name()
print(f"اسم البروفايل الجديد: {profile_name}")

# تحديد مسار مجلد البروفايل الجديد
current_dir = os.getcwd()
profile_path = os.path.join(current_dir, f"profile_{profile_name}")

# إنشاء مجلد البروفايل إذا لم يكن موجودًا
os.makedirs(profile_path, exist_ok=True)

# إعداد خيارات متصفح Edge
edge_options = Options()
edge_options.use_chromium = True
edge_options.add_argument(f'--user-data-dir={profile_path}')  # تحديد مسار بيانات المستخدم
edge_options.add_argument('--profile-directory=Default')      # استخدام البروفايل الافتراضي داخل مجلد بيانات المستخدم
edge_options.add_argument('--start-maximized')               # فتح المتصفح في وضع ملء الشاشة

# **اختياري**: تحديد مسار msedge.exe إذا لم يكن في PATH
# edge_options.binary_location = "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe"

# إنشاء مثيل المتصفح مع الخيارات المحددة
try:
    driver = webdriver.Edge(options=edge_options)
    print("تم فتح متصفح Edge ببروفايل جديد بنجاح.")
except Exception as e:
    print(f"حدث خطأ أثناء فتح المتصفح: {e}")
    exit()

# الانتظار لثوانٍ قليلة لضمان تحميل المتصفح
time.sleep(5)

# توجيه المتصفح إلى صفحة إعدادات البروفايلات في Edge
SETTINGS_URL = "edge://settings/profiles"
try:
    driver.get(SETTINGS_URL)
    print(f"تم توجيه المتصفح إلى {SETTINGS_URL}")
except Exception as e:
    print(f"حدث خطأ أثناء التوجيه إلى {SETTINGS_URL}: {e}")
    driver.quit()
    exit()

# الانتظار لعدة ثوانٍ لضمان تحميل الصفحة بالكامل
time.sleep(5)

# ضبط التركيز على نافذة Edge باستخدام pygetwindow
def focus_edge_window():
    # قد تحتاج لتعديل عنوان النافذة بناءً على لغة النظام والإصدار
    # على سبيل المثال، "Settings" قد تكون "الإعدادات" أو ما شابه
    windows = gw.getWindowsWithTitle('Settings')
    if not windows:
        # حاول البحث عن نافذة Edge عمومًا إذا لم يتم العثور على "Settings"
        windows = gw.getWindowsWithTitle('Edge')
    if windows:
        edge_window = windows[0]
        edge_window.activate()
        print("تم تنشيط نافذة Edge.")
    else:
        print("لم يتم العثور على نافذة Edge. تأكد من أن النافذة مفتوحة.")
        exit()

focus_edge_window()

# الانتظار قليلاً بعد تنشيط النافذة
time.sleep(2)

# بدء العد التنازلي لمدة 5 ثوانٍ للسماح بوضع مؤشر الفأرة في الموقع المطلوب
print("سيبدأ العد التنازلي لمدة 5 ثوانٍ لوضع مؤشر الفأرة في الموقع المطلوب...")
for remaining in range(5, 0, -1):
    print(f"{remaining}...", end='', flush=True)
    time.sleep(1)
print("\nانتهاء العد التنازلي. سيتم النقر على الإحداثيات المحددة.")

# تعريف إحداثيات النقرة المطلوبة
pixel_x, pixel_y = 109, 210
print(f"سيتم النقر على الإحداثيات ({pixel_x}, {pixel_y}) الآن.")
pyautogui.click(x=pixel_x, y=pixel_y)
print(f"تم النقر على الإحداثيات ({pixel_x}, {pixel_y}) بنجاح.")

# الانتظار لبضع ثوانٍ لضمان تنفيذ النقرة
time.sleep(2)

# الضغط على مفتاح "Tab" سبع مرات
print("سيتم الضغط على مفتاح 'Tab' 7 مرات.")
for _ in range(7):
    pyautogui.press('tab')
    time.sleep(0.1)  # تأخير بسيط بين الضغطات لضمان التسجيل الصحيح
print("تم الضغط على مفتاح 'Tab' 7 مرات.")

# الضغط على مفتاح "السهم للأسفل" عشرين مرة بسرعة
print("سيتم الضغط على مفتاح 'السهم للأسفل' 20 مرة بسرعة.")
for _ in range(20):
    pyautogui.press('down')
    # عدم إضافة تأخير لجعل الضغطات سريعة
print("تم الضغط على مفتاح 'السهم للأسفل' 20 مرة.")

# الضغط على مفتاح "Enter" لتأكيد الاختيار
print("سيتم الضغط على مفتاح 'Enter' لتأكيد الاختيار.")
pyautogui.press('enter')
print("تم الضغط على مفتاح 'Enter' لتأكيد الاختيار.")

# الانتظار لبضع ثوانٍ لضمان تنفيذ الأوامر السابقة
time.sleep(2)

# **محاولة استخدام Selenium للنقر على زر "Sign in to sync data"** (قد لا تعمل مع صفحات edge://)
try:
    # إعادة ضبط الوقت المتوقع للانتظار
    wait = WebDriverWait(driver, 10)
    # استخدام XPath المقدم للعثور على الزر
    SIGN_IN_SYNC_XPATH = '//*[@id="sign-in-button"]/span'
    sign_in_sync_button = wait.until(EC.element_to_be_clickable((By.XPATH, SIGN_IN_SYNC_XPATH)))
    sign_in_sync_button.click()
    print("تم النقر على زر 'Sign in to sync data' بنجاح باستخدام Selenium.")
except Exception as e:
    print(f"لم يتم العثور على زر 'Sign in to sync data' عبر Selenium: {e}")
    # **بديل**: استخدام pyautogui للنقر على الإحداثيات المحددة للزر
    # تحقق من إحداثيات الزر على شاشتك واستخدمها هنا
    # مثال:
    # pixel_x_btn, pixel_y_btn = 500, 600  # قم بتعديل القيم بناءً على موقع الزر
    # pyautogui.click(x=pixel_x_btn, y=pixel_y_btn)
    # print(f"تم النقر على زر 'Sign in to sync data' باستخدام pyautogui على الإحداثيات ({pixel_x_btn}, {pixel_y_btn}).")
    print("يمكنك تعديل السكربت لاستخدام pyautogui للنقر على زر 'Sign in to sync data' إذا لزم الأمر.")

# إبقاء المتصفح مفتوحًا لمراجعة النتيجة
try:
    input("اضغط Enter لإغلاق المتصفح...")
finally:
    driver.quit()
    print("تم إغلاق المتصفح.")