├── README.md └── main.py /README.md: -------------------------------------------------------------------------------- 1 | # 🌟 Phone Number Details Extractor Code 2 | 3 | Unravel phone number mysteries effortlessly with this Python code! Harnessing the power of phonenumbers, it unveils country specifics, pinpoints locations, reveals carriers, and validates number types – all presented in a beautifully organized format for easy comprehension. 4 | 5 | ## Modules Required 6 | 7 | ```bash 8 | pip install phonenumbers 9 | ``` 10 | 11 | 📞🌍✨🔍 12 | 13 | **Engineered by NepCoder @devsnp.** 14 | 15 | ## How to Use: 16 | 17 | 1. **Clone the Repository:** 18 | ```bash 19 | git clone https://github.com/Nepcoder1/PhoneNumber-Details-Extractor.git 20 | ``` 21 | 22 | 2. **Run the Code:** 23 | Navigate to the cloned directory and execute the main.py file. 24 | 25 | 3. **Explore Phone Number Details:** 26 | Enter the desired phone number and witness the magic as the code extracts comprehensive details. 27 | 28 | 4. **Enhance Your Understanding:** 29 | Dive into the code and customize it as needed. Understand the phonenumbers module for further insights. 30 | 31 | ## Enjoy Unveiling Phone Number Secrets! 🌟 32 | 33 | Feel free to share and modify this code, but please remember to credit [@devsnp](https://t.me/devsnp) for their ingenious contribution. Happy extracting! 📞✨ 34 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | import phonenumbers 2 | from phonenumbers import geocoder, carrier, phonenumberutil, timezone 3 | 4 | 5 | title = """ 6 | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠿⢷⠄⠀⠀⠀ 7 | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⠋⡠⠃⠀⠀⠀⠀ 8 | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⠅⢴⡁⠀⠀⠀⠀⠀ 9 | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣞⣁⠀⠀⠀⠀⠁⠢⣀⠀⠀ 10 | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠞⠉⠧⠤⡧⠒⠈⠉⢐⢤⡀⠑⢄ 11 | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡔⣡⣀⠀⠀⡌⠀⠀⠀⠐⠀⠀⢷⠀⢸ 12 | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢊⠌⠀⠈⠳⣄⠻⡁⠁⠈⠥⠀⢀⣼⠀⢸ 13 | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣣⠃⢀⠀⠀⠀⠈⠓⢈⠒⢤⡼⠴⠞⠁⢀⠆ 14 | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⣻⠃⢀⠎⠑⠦⡀⠀⠀⠀⠑⢄⠀⠀⠀⢀⠌⠀ 15 | ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⢱⠃⡠⠃⠀⠀⠀⠈⠑⠠⣀⠀⠀⠑⣄⣠⠊⠀⠀ 16 | ⠀⠀⠀⠀⠀⠀⠀⠀⢠⡱⡧⣇⣜⠁⠀⠀⠀⠀⠀⠀⠀⠀⢑⠆⣰⡿⠁⠀⠀⠀ 17 | ⠀⠀⠀⠀⠀⠀⠀⠀⡟⠁⣷⣎⢫⣑⠦⣀⠀⠀⠀⠀⠀⡠⢊⢔⠜⠀⠀⠀⠀⠀ 18 | ⠀⠀⠀⠀⠀⠀⢀⠎⢀⣀⣛⠋⢸⣦⣍⡙⢕⠤⣀⢀⢔⡵⡡⠊⠀⠀⠀⠀⠀⠀ 19 | ⠀⠀⠀⠀⠀⢠⢋⣀⡼⠿⠿⠇⠙⢿⣿⠿⢀⣁⡙⠻⢋⡔⠁⠀⠀⠀⠀⠀⠀⠀ 20 | ⠀⠀⠀⠀⡰⠁⣀⢻⣿⠆⣀⡀⠀⠀⠀⠐⠛⠿⠟⢠⠞⠀⠀⠀⠀⠀⠀⠀⠀⠀ 21 | ⠀⠀⠀⡔⠁⠘⢿⡿⠀⡀⠻⣿⡷⢀⡀⠀⠀⠀⡰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 22 | ⠀⠀⡜⠀⢿⣿⠆⠀⠐⢿⣷⡆⠀⢺⣿⡷⠆⡜⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 23 | ⢀⡌⢰⣾⡶⠀⠀⣿⣿⡆⠀⠀⢿⣷⡎⢠⠞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 24 | ⣜⠀⠀⠈⠀⠠⣶⣦⡉⠀⢸⣿⣦⠀⡰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 25 | ⠸⣆⡀⠀⠀⠀⠈⠉⠁⣤⣦⠉⢩⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 26 | ⠀⠀⠉⠓⠦⣄⠀⠀⠀⠙⠋⡴⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 27 | ⠀⠀⠀⠀⠀⠈⠙⠦⣄⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 28 | """ 29 | 30 | 31 | print("\033[1;32;40m" + title + "\033[m") 32 | 33 | print("📞 Welcome to the Phone Number Details Extractor by NepCoder! 📞") 34 | print("Please enter the phone number below:") 35 | 36 | phone_number = input("Enter the phone number: ") 37 | 38 | try: 39 | number = phonenumbers.parse(phone_number, None) 40 | country_code = phonenumbers.region_code_for_number(number) 41 | location = geocoder.description_for_number(number, "en") 42 | carrier_name = carrier.name_for_number(number, "en") if carrier.name_for_number(number, "en") else "Unknown Carrier" 43 | 44 | number_type = phonenumberutil.number_type(number) 45 | number_type_description = "Mobile" if number_type == phonenumberutil.PhoneNumberType.MOBILE else ( 46 | "Fixed-line" if number_type == phonenumberutil.PhoneNumberType.FIXED_LINE else ( 47 | "Toll-free" if number_type == phonenumberutil.PhoneNumberType.TOLL_FREE else ( 48 | "Premium rate" if number_type == phonenumberutil.PhoneNumberType.PREMIUM_RATE else ( 49 | "Shared cost" if number_type == phonenumberutil.PhoneNumberType.SHARED_COST else ( 50 | "VOIP" if number_type == phonenumberutil.PhoneNumberType.VOIP else "Other" 51 | ) 52 | ) 53 | ) 54 | ) 55 | ) 56 | 57 | validity = "Valid" if phonenumbers.is_valid_number(number) else "Invalid" 58 | formatted_number = phonenumbers.format_number(number, phonenumbers.PhoneNumberFormat.INTERNATIONAL) 59 | possible_lengths = [len(str(number)) for number in phonenumbers.PhoneNumberMatcher(phone_number, "ZZ")] 60 | possible_lengths_description = f"Possible lengths: {', '.join(str(length) for length in possible_lengths)}" 61 | country_name = geocoder.country_name_for_number(number, "en") 62 | is_possible = "Possible" if phonenumbers.is_possible_number(number) else "Not possible" 63 | 64 | time_zones = timezone.time_zones_for_number(number) 65 | time_zones_description = f"Time Zones: {', '.join(time_zones)}" if time_zones else "Time zone information not available" 66 | 67 | national_number = phonenumbers.format_number(number, phonenumbers.PhoneNumberFormat.NATIONAL) 68 | extension = number.extension if number.extension else "No extension" 69 | 70 | latitude, longitude = None, None 71 | administrative_area = None 72 | possible_geocoding = None 73 | 74 | 75 | if location != "Unknown": 76 | info = geocoder.description_for_number(number, "en", region=None) 77 | location_info = info.split(', ') 78 | if len(location_info) >= 2: 79 | latitude, longitude = location_info[-1].split('/') 80 | administrative_area = location_info[-2] 81 | possible_geocoding = geocoder.description_for_number(number, "en", region='US') 82 | 83 | is_possible_emergency_number = "Yes" if phonenumbers.is_possible_number_for_type(number, "001") else "No" 84 | 85 | 86 | if hasattr(carrier, 'name_for_number'): 87 | carrier_name = carrier.name_for_number(number, "en") or "Unknown Carrier" 88 | else: 89 | carrier_name = "Carrier information not available" 90 | 91 | 92 | valid_in_region = phonenumbers.is_valid_number_for_region(number, country_code) 93 | is_possible_number_type = "Possible" if phonenumbers.is_possible_number_for_type(number, "MOBILE") else "Not possible" 94 | is_possible_short_code = "Possible" if phonenumbers.is_possible_short_number(number) else "Not possible" 95 | is_valid_number_in_region = "Valid" if phonenumbers.is_valid_number_for_region(number, country_code) else "Not valid" 96 | 97 | 98 | time_zone_name = None 99 | if len(time_zones) > 0: 100 | time_zone_info = timezone.time_zones_for_number(number) 101 | if time_zone_info: 102 | time_zone_name = ', '.join(time_zone_info) 103 | 104 | 105 | possible_lengths = len(phonenumbers.PhoneNumberMatcher(phone_number, "ZZ").next().raw_string) 106 | national_significant_number = phonenumbers.national_significant_number(number) 107 | e164_format = phonenumbers.format_number(number, phonenumbers.PhoneNumberFormat.E164) 108 | rfc3966_format = phonenumbers.format_number(number, phonenumbers.PhoneNumberFormat.RFC3966) 109 | possible_types = str(number_type) 110 | 111 | details = { 112 | "Country Code": country_code, 113 | "Country Name": country_name, 114 | "Location": location, 115 | "Latitude": latitude, 116 | "Longitude": longitude, 117 | "Administrative Area": administrative_area, 118 | "Possible Geocoding (US)": possible_geocoding, 119 | "Sim Name": carrier_name, 120 | "Number Type": number_type_description, 121 | "Validity": validity, 122 | "Valid in Region": valid_in_region, 123 | "Formatted Number": formatted_number, 124 | "Possible Lengths": possible_lengths_description, 125 | "Is Possible Number": is_possible, 126 | "Time Zones": time_zones_description, 127 | "National Number": national_number, 128 | "Extension": extension, 129 | "Possible Emergency Number": is_possible_emergency_number, 130 | "Possible Mobile Number": is_possible_number_type, 131 | "Possible Short Code": is_possible_short_code, 132 | "Valid Number in Region": is_valid_number_in_region, 133 | "Time Zone Name": time_zone_name, 134 | "Possible Lengths": possible_lengths, 135 | "National Significant Number": national_significant_number, 136 | "E164 Format": e164_format, 137 | "RFC3966 Format": rfc3966_format, 138 | "Possible Types": possible_types 139 | } 140 | 141 | print("\n🌐 Phone Number Details 🌐:") 142 | for key, value in details.items(): 143 | print(f"{key}: {value}") 144 | 145 | except phonenumbers.phonenumberutil.NumberParseException as e: 146 | print("❌ Number could not be parsed:", e) 147 | --------------------------------------------------------------------------------