import phonenumbers
from phonenumbers import carrier, geocoder


def check_phone_number(phone_number):
    """
    Проверява държавата и града на телефонен номер
    
    Args:
        phone_number: Телефонен номер във формат +359XXXXXXXXX
    """
    try:
        # Парсване на номера
        parsed_number = phonenumbers.parse(phone_number, None)
        
        # Проверка дали номерът е валиден
        if not phonenumbers.is_valid_number(parsed_number):
            print("Невалиден телефонен номер!")
            return
        
        # Получаване на информация
        location = geocoder.description_for_number(parsed_number, "bg")
        operator = carrier.name_for_number(parsed_number, "bg")
        country = geocoder.country_name_for_number(parsed_number, "bg")
        
        # Извеждане на резултатите
        print(f"\n{'='*50}")
        print(f"Телефонен номер: {phone_number}")
        print(f"{'='*50}")
        print(f"Държава: {country}")
        print(f"Локация/Град: {location if location else 'Няма информация'}")
        print(f"Оператор: {operator if operator else 'Неизвестен'}")
        print(f"{'='*50}\n")
        
    except phonenumbers.NumberParseException:
        print("Грешка при парсване на номера. Използвайте формат +359XXXXXXXXX")

# Примери за използване
if __name__ == "__main__":
    # Примерни номера - замени с реални
    test_numbers = [
        "+359888123456",  # България
        "+442071234567",  # Великобритания
        "+12025551234",   # САЩ
    ]
    
    for number in test_numbers:
        check_phone_number(number)
    
    # Или въведи номер ръчно
    print("Въведи телефонен номер (формат: +359XXXXXXXXX) или 'q' за изход:")
    while True:
        user_input = input("> ")
        if user_input.lower() == 'q':
            break
        check_phone_number(user_input)