Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import phonenumbers
- from phonenumbers import geocoder, carrier, timezone, PhoneNumberFormat
- from geopy.geocoders import Nominatim
- def parse_phone_number(phone_number_str, country_code=None):
- """Parses a phone number and attempts to get location info.
- Args:
- phone_number_str: The phone number as a string.
- country_code: Optional ISO 3166-1 alpha-2 country code (e.g., "US", "GB").
- Returns:
- A dictionary containing the extracted information or None if parsing fails.
- """
- try:
- # Parse the phone number
- phone_number = phonenumbers.parse(phone_number_str, country_code)
- # Get basic information
- country_code = phone_number.country_code
- national_number = phone_number.national_number
- # Validate the phone number
- is_valid = phonenumbers.is_valid_number(phone_number)
- # Get approximate location (country, region)
- region = geocoder.description_for_number(phone_number, "en")
- # Get location in English
- country = geocoder.country_name_for_number(phone_number, "en")
- # Get carrier (if available)
- phone_carrier = carrier.name_for_number(phone_number, "en")
- # Get timezone(s)
- timezones = timezone.time_zones_for_number(phone_number)
- # Attempt to get coordinates using geopy (requires a valid location)
- if region:
- geolocator = Nominatim(user_agent="phone_number_parser")
- location = geolocator.geocode(region)
- if location:
- latitude = location.latitude
- longitude = location.longitude
- else:
- latitude = None
- longitude = None
- else:
- latitude = None
- longitude = None
- return {
- "country_code": country_code,
- "national_number": national_number,
- "is_valid": is_valid,
- "region": region,
- "country": country,
- "carrier": phone_carrier,
- "timezones": timezones,
- "latitude": latitude,
- "longitude": longitude
- }
- except phonenumbers.phonenumberutil.NumberParseException as e:
- print(f"Error parsing phone number: {e}")
- return None
- if __name__ == '__main__':
- phone_number_input = input("Enter phone number: ")
- result = parse_phone_number(phone_number_input)
- if result:
- print("\nPhone Number Information:")
- for key, value in result.items():
- print(f"{key}: {value}")
- else:
- print("Could not parse the phone number.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement