Advertisement
Jackspade9624

phone parser,,,

May 13th, 2025
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.73 KB | None | 0 0
  1. import phonenumbers
  2. from phonenumbers import geocoder, carrier, timezone, PhoneNumberFormat
  3. from geopy.geocoders import Nominatim
  4.  
  5. def parse_phone_number(phone_number_str, country_code=None):
  6. """Parses a phone number and attempts to get location info.
  7.  
  8. Args:
  9. phone_number_str: The phone number as a string.
  10. country_code: Optional ISO 3166-1 alpha-2 country code (e.g., "US", "GB").
  11.  
  12. Returns:
  13. A dictionary containing the extracted information or None if parsing fails.
  14. """
  15. try:
  16. # Parse the phone number
  17. phone_number = phonenumbers.parse(phone_number_str, country_code)
  18.  
  19. # Get basic information
  20. country_code = phone_number.country_code
  21. national_number = phone_number.national_number
  22.  
  23. # Validate the phone number
  24. is_valid = phonenumbers.is_valid_number(phone_number)
  25.  
  26. # Get approximate location (country, region)
  27. region = geocoder.description_for_number(phone_number, "en")
  28.  
  29. # Get location in English
  30. country = geocoder.country_name_for_number(phone_number, "en")
  31.  
  32. # Get carrier (if available)
  33. phone_carrier = carrier.name_for_number(phone_number, "en")
  34. # Get timezone(s)
  35. timezones = timezone.time_zones_for_number(phone_number)
  36.  
  37. # Attempt to get coordinates using geopy (requires a valid location)
  38. if region:
  39. geolocator = Nominatim(user_agent="phone_number_parser")
  40. location = geolocator.geocode(region)
  41. if location:
  42. latitude = location.latitude
  43. longitude = location.longitude
  44. else:
  45. latitude = None
  46. longitude = None
  47. else:
  48. latitude = None
  49. longitude = None
  50.  
  51.  
  52. return {
  53. "country_code": country_code,
  54. "national_number": national_number,
  55. "is_valid": is_valid,
  56. "region": region,
  57. "country": country,
  58. "carrier": phone_carrier,
  59. "timezones": timezones,
  60. "latitude": latitude,
  61. "longitude": longitude
  62. }
  63.  
  64. except phonenumbers.phonenumberutil.NumberParseException as e:
  65. print(f"Error parsing phone number: {e}")
  66. return None
  67.  
  68. if __name__ == '__main__':
  69. phone_number_input = input("Enter phone number: ")
  70. result = parse_phone_number(phone_number_input)
  71.  
  72. if result:
  73. print("\nPhone Number Information:")
  74. for key, value in result.items():
  75. print(f"{key}: {value}")
  76. else:
  77. print("Could not parse the phone number.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement