import ctypes
import sys

def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

if not is_admin():
    # Перезапускаем скрипт с правами администратора
    ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, ' '.join(sys.argv), None, 1)
    sys.exit()

def main_menu():
    while True:
        print("Выберите опцию:")
        print("1) Очистка")
        print("2) Изменение даты")
        print("0) Выход")
        choice = input("Введите ваш выбор: ")
        if choice == '1':
            cleaning()
        elif choice == '2':
            change_date()
        elif choice == '0':
            print("Выход...")
            sys.exit()
        else:
            print("Неверный выбор. Попробуйте снова.\n")

def cleaning():
    import os
    import shutil
    import pyautogui
    import time

    # Шаг 1: Открываем Win+R, вводим 'tree', нажимаем Enter
    pyautogui.hotkey('win', 'r')
    time.sleep(0.5)
    pyautogui.typewrite('tree')
    time.sleep(0.5)
    pyautogui.press('enter')
    # Оставляем окно открытым

    # Удаление файлов в папке 'Recent'
    recent_path = os.path.join(os.environ['APPDATA'], 'Microsoft', 'Windows', 'Recent')
    print(f"\nУдаление файлов в {recent_path}")
    success, failure = remove_files_from_folder(recent_path)
    print(f"Завершено: Удалено успешно: {success}, Не удалось удалить: {failure}\n")

    # Удаление файлов в папке 'Temp'
    temp_path = os.environ['TEMP']
    print(f"\nУдаление файлов в {temp_path}")
    success, failure = remove_files_from_folder(temp_path)
    print(f"Завершено: Удалено успешно: {success}, Не удалось удалить: {failure}\n")

    # Удаление файлов в папке 'Prefetch'
    prefetch_path = os.path.join(os.environ['SYSTEMROOT'], 'Prefetch')
    print(f"\nУдаление файлов в {prefetch_path}")
    success, failure = remove_files_from_folder(prefetch_path)
    print(f"Завершено: Удалено успешно: {success}, Не удалось удалить: {failure}\n")

    print("Очистка завершена. Возврат в главное меню...")
    input("Нажмите Enter, чтобы продолжить...")

def remove_files_from_folder(folder_path):
    import os
    import shutil

    success_count = 0
    failure_count = 0

    try:
        items = os.listdir(folder_path)
    except Exception as e:
        print(f"Не удалось получить список файлов в {folder_path}: {e}")
        return success_count, failure_count

    for filename in items:
        file_path = os.path.join(folder_path, filename)
        if os.path.isfile(file_path) or os.path.islink(file_path):
            deleted = False
            for attempt in range(2):
                try:
                    os.unlink(file_path)
                    success_count += 1
                    deleted = True
                    break
                except Exception as e:
                    print(f"Попытка {attempt+1}: Не удалось удалить файл '{filename}'. Ошибка: {e}")
                    time.sleep(0.1)  # Короткая пауза перед повторной попыткой
            if not deleted:
                failure_count += 1
                print(f"Пропуск файла '{filename}'.")
        elif os.path.isdir(file_path):
            deleted = False
            for attempt in range(2):
                try:
                    shutil.rmtree(file_path)
                    success_count += 1
                    deleted = True
                    break
                except Exception as e:
                    print(f"Попытка {attempt+1}: Не удалось удалить папку '{filename}'. Ошибка: {e}")
                    time.sleep(0.1)  # Короткая пауза перед повторной попыткой
            if not deleted:
                failure_count += 1
                print(f"Пропуск папки '{filename}'.")
    return success_count, failure_count

def change_date():
    try:
        from prompt_toolkit import prompt
        from prompt_toolkit.completion import FuzzyWordCompleter
    except ImportError:
        print("Для работы этой функции необходимо установить библиотеку prompt_toolkit.")
        print("Установите её с помощью команды: pip install prompt_toolkit")
        input("Нажмите Enter, чтобы выйти...")
        return

    regions = {
        "Северная Америка": {
            "United States": "Pacific Standard Time",
            "Canada": "Eastern Standard Time",
            "Mexico": "Central Standard Time",
            "Bahamas": "Eastern Standard Time",
            "Barbados": "SA Western Standard Time",
            "Costa Rica": "Central America Standard Time",
            "Cuba": "SA Pacific Standard Time",
            "Jamaica": "SA Pacific Standard Time",
            "Panama": "SA Pacific Standard Time",
            # Добавьте другие страны
        },
        "Азиатско-Тихоокеанский регион": {
            "China": "China Standard Time",
            "Japan": "Tokyo Standard Time",
            "Australia": "AUS Eastern Standard Time",
            "India": "India Standard Time",
            "South Korea": "Korea Standard Time",
            "Indonesia": "SE Asia Standard Time",
            "Malaysia": "Singapore Standard Time",
            "New Zealand": "New Zealand Standard Time",
            "Philippines": "Singapore Standard Time",
            "Singapore": "Singapore Standard Time",
            "Thailand": "SE Asia Standard Time",
            "Vietnam": "SE Asia Standard Time",
            # Добавьте другие страны
        },
        "Европа": {
            "United Kingdom": "GMT Standard Time",
            "France": "Romance Standard Time",
            "Germany": "W. Europe Standard Time",
            "Russia": "Russian Standard Time",
            "Spain": "Romance Standard Time",
            "Italy": "W. Europe Standard Time",
            "Netherlands": "W. Europe Standard Time",
            "Switzerland": "W. Europe Standard Time",
            "Sweden": "W. Europe Standard Time",
            "Norway": "W. Europe Standard Time",
            "Poland": "Central European Standard Time",
            "Finland": "FLE Standard Time",
            "Greece": "GTB Standard Time",
            "Ukraine": "FLE Standard Time",
            "Turkey": "Turkey Standard Time",
            # Добавьте другие страны
        },
        "Ближний Восток": {
            "Saudi Arabia": "Arab Standard Time",
            "United Arab Emirates": "Arabian Standard Time",
            "Israel": "Israel Standard Time",
            "Qatar": "Arab Standard Time",
            "Kuwait": "Arab Standard Time",
            "Jordan": "Jordan Standard Time",
            "Lebanon": "Middle East Standard Time",
            "Oman": "Arabian Standard Time",
            # Добавьте другие страны
        },
        "Южная Америка": {
            "Brazil": "E. South America Standard Time",
            "Argentina": "Argentina Standard Time",
            "Chile": "Pacific SA Standard Time",
            "Colombia": "SA Pacific Standard Time",
            "Peru": "SA Pacific Standard Time",
            "Venezuela": "Venezuela Standard Time",
            "Ecuador": "SA Pacific Standard Time",
            "Bolivia": "SA Western Standard Time",
            # Добавьте другие страны
        },
        "Африка": {
            "South Africa": "South Africa Standard Time",
            "Egypt": "Egypt Standard Time",
            "Nigeria": "W. Central Africa Standard Time",
            "Kenya": "E. Africa Standard Time",
            "Ethiopia": "E. Africa Standard Time",
            "Morocco": "Morocco Standard Time",
            "Ghana": "Greenwich Standard Time",
            "Tanzania": "E. Africa Standard Time",
            "Uganda": "E. Africa Standard Time",
            # Добавьте другие страны
        },
        "Центральная Америка": {
            "Guatemala": "Central America Standard Time",
            "Honduras": "Central America Standard Time",
            "Nicaragua": "Central America Standard Time",
            "El Salvador": "Central America Standard Time",
            "Belize": "Central America Standard Time",
            # Добавьте другие страны
        },
        "Ближний Восток и Северная Африка": {
            "Algeria": "W. Central Africa Standard Time",
            "Tunisia": "W. Central Africa Standard Time",
            "Libya": "South Africa Standard Time",
            "Sudan": "E. Africa Standard Time",
            "Syria": "Syria Standard Time",
            "Iraq": "Arabic Standard Time",
            "Iran": "Iran Standard Time",
            # Добавьте другие страны
        },
        "Центральная Азия": {
            "Kazakhstan": "Central Asia Standard Time",
            "Uzbekistan": "West Asia Standard Time",
            "Turkmenistan": "West Asia Standard Time",
            "Kyrgyzstan": "Central Asia Standard Time",
            "Tajikistan": "West Asia Standard Time",
            # Добавьте другие страны
        },
        "Юго-Восточная Азия": {
            "Myanmar": "Myanmar Standard Time",
            "Cambodia": "SE Asia Standard Time",
            "Laos": "SE Asia Standard Time",
            "Brunei": "Singapore Standard Time",
            # Добавьте другие страны
        },
        "Океания": {
            "Fiji": "Fiji Standard Time",
            "Papua New Guinea": "West Pacific Standard Time",
            "Solomon Islands": "Central Pacific Standard Time",
            "Samoa": "Samoa Standard Time",
            "Tonga": "Tonga Standard Time",
            # Добавьте другие страны
        },
        "Карибский регион": {
            "Dominican Republic": "SA Western Standard Time",
            "Haiti": "Eastern Standard Time",
            "Trinidad and Tobago": "SA Western Standard Time",
            # Добавьте другие страны
        },
        "Южная Азия": {
            "Bangladesh": "Bangladesh Standard Time",
            "Pakistan": "Pakistan Standard Time",
            "Sri Lanka": "Sri Lanka Standard Time",
            "Nepal": "Nepal Standard Time",
            "Maldives": "West Asia Standard Time",
            # Добавьте другие страны
        },
        "Восточная Европа": {
            "Belarus": "Belarus Standard Time",
            "Bulgaria": "FLE Standard Time",
            "Romania": "GTB Standard Time",
            "Czech Republic": "Central European Standard Time",
            "Hungary": "Central European Standard Time",
            "Slovakia": "Central European Standard Time",
            # Добавьте другие страны
        },
        "Северная Европа": {
            "Denmark": "Romance Standard Time",
            "Iceland": "Greenwich Standard Time",
            "Ireland": "GMT Standard Time",
            "Latvia": "FLE Standard Time",
            "Lithuania": "FLE Standard Time",
            "Estonia": "FLE Standard Time",
            # Добавьте другие страны
        },
        "Южная Европа": {
            "Portugal": "GMT Standard Time",
            "Greece": "GTB Standard Time",
            "Croatia": "Central European Standard Time",
            "Slovenia": "Central European Standard Time",
            "Serbia": "Central European Standard Time",
            "Albania": "Central European Standard Time",
            # Добавьте другие страны
        },
        "Антарктида": {
            "Antarctica": "UTC+12",
            # Специфичные часовые пояса для станций
        },
        "Арктика": {
            "Гренландия": "Greenland Standard Time",
            # Добавьте другие территории
        },
    }

    # Собираем полный список стран
    country_timezones = {}
    for region_countries in regions.values():
        country_timezones.update(region_countries)

    countries = list(country_timezones.keys())

    # Создаем автодополнение с помощью FuzzyWordCompleter без параметра ignore_case
    completer = FuzzyWordCompleter(countries)

    print("Введите название страны (на английском) или часть названия для поиска:")
    country_name = prompt("> ", completer=completer)

    # Приводим ввод пользователя и список стран к одному регистру для сравнения
    country_name_lower = country_name.lower()
    countries_lower = [country.lower() for country in countries]

    if country_name_lower in countries_lower:
        # Получаем оригинальное название страны
        original_country_name = countries[countries_lower.index(country_name_lower)]
        time_zone = country_timezones[original_country_name]
        try:
            # Используем tzutil для установки часового пояса
            import subprocess
            subprocess.run(['tzutil', '/s', time_zone], check=True)
            print(f"Часовой пояс изменён на {time_zone}.")
        except subprocess.CalledProcessError as e:
            print(f"Не удалось изменить часовой пояс: {e}")
    else:
        print(f"Не удалось найти часовой пояс для страны '{country_name}'.")
    print("Возврат в главное меню...")
    input("Нажмите Enter, чтобы продолжить...")

if __name__ == "__main__":
    main_menu()

time.sleep(0.1)  # Короткая пауза перед повторной попыткой
    ^^^^
NameError: name 'time' is not defined