KROSHSoftWare
New member
что тут не так с кодом
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")