• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

консоль не выдает ничего а если из предпросмотра вылетает

KROSHSoftWare

New member
12.03.2025
1
0
BIT
4
что тут не так с кодом
Python:
from functools import lru_cache

import phonenumbers
import requests
from phonenumbers import carrier, geocoder


def console_clear():
    pass


# Начало пробива по httpweb
class HttpWebNumber:
    def __init__(self) -> None:
        self.__check_number_link: str = "https://htmlweb.ru/geo/api.php?json&telcod="
        self.__not_found_text: str = "Информация отсутствует"

    @lru_cache(maxsize=None)
    def __return_number_data(self, user_number: str) -> dict:
        """Получение данных о номере телефона."""
        try:
            response = requests.get(
                self.__check_number_link + user_number,
                headers={
                    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15"
                },
            )

            if response.ok:
                try:
                    return response.json()
                except ValueError:
                    print(
                        "Ошибка в получении данных. Убедитесь, что номер введен корректно.\n"
                    )
            else:
                return {"status_error": True}
        except requests.exceptions.ConnectionError:
            print("Ошибка соединения. Пожалуйста, проверьте интернет-соединение.\n")
            return {"status_error": True}

    @property
    def print_number_results(self) -> None:
        try:
            console_clear()
            _user_number: str = input(
                "Введите номер телефона в формате +79833170773: "
            ).strip()

            if _user_number:
                print("Поиск данных..\n")
                _get_user_number_data = self.__return_number_data(
                    user_number=_user_number
                )

                if _get_user_number_data.get("limit") <= 0:
                    print("К сожалению, вы израсходовали все лимиты")
                    print(
                        f'Всего лимитов: {str(_get_user_number_data.get("limit", self.__not_found_text))}'
                    )
                elif _get_user_number_data.get(
                    "status_error"
                ) or _get_user_number_data.get("error"):
                    print("Данные не найдены \n")
                else:
                    # Получаем данные о стране, регионе и операторе
                    _number_data_country = _get_user_number_data.get("country", {})
                    _number_data_region = _get_user_number_data.get("region", {})
                    _number_data_other = _get_user_number_data.get("0", {})

                    parsed_number = phonenumbers.parse(_user_number)
                    country = geocoder.description_for_number(parsed_number, "ru")
                    operator = carrier.name_for_number(parsed_number, "ru")
                    valid = phonenumbers.is_valid_number(parsed_number)
                    international_format = phonenumbers.format_number(
                        parsed_number, phonenumbers.PhoneNumberFormat.INTERNATIONAL
                    )

                    # Вывод полученной информации
                    print(
                        f'Страна: {country}, {self.__not_found_text if not _number_data_country else _number_data_country.get("fullname", self.__not_found_text)}'
                    )
                    print(
                        f'Город: {self.__not_found_text if not _number_data_other else _number_data_other.get("name", self.__not_found_text)}'
                    )
                    print(
                        f'Оператор: {self.__not_found_text if not _number_data_other else _number_data_other.get("oper", self.__not_found_text)}'
                    )
                    print(
                        f'Местоположение: {self.__not_found_text if not _number_data_country else _number_data_country.get("name", self.__not_found_text)}, {self.__not_found_text if not _number_data_region else _number_data_region.get("name", self.__not_found_text)}'
                    )
                    print(
                        f'Область: {self.__not_found_text if not _number_data_region else _number_data_region.get("name", self.__not_found_text)}'
                    )
                    print(
                        f'Столица: {self.__not_found_text if not _number_data_country else _number_data_country.get("capital", self.__not_found_text)}'
                    )

                    print("Что найдено в модуле phonenumbers:")
                    print(
                        {
                            "Номер": international_format,
                            "Страна": country,
                            "Оператор": operator,
                            "Действителен": valid,
                        }
                    )

                input("Чтобы завершить поиск, нажмите ENTER ")
            else:
                print("Ошибка, введите номер телефона!\n")
        except KeyboardInterrupt:
            print("\nВынужденная остановка работы!\n")
 

Вложения

  • Снимок экрана 2025-03-13 210422.webp
    Снимок экрана 2025-03-13 210422.webp
    4,2 КБ · Просмотры: 145
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!