Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 58 additions & 21 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,31 +11,68 @@
root.geometry("385x594+300+200")
root.resizable(False,False)
root.configure(bg='#96BFFF')
key="get your free api key from openCage website"
key='YOUR_OPENCAGE_API_KEY' # Get your free API key at https://opencagedata.com/ (keep API key in quotes, do not remove quotes)

def track():
enter_nb=entry.get()
number=phonenumbers.parse(enter_nb)

location=geocoder.description_for_number(number,'en')
country.config(text=location)

service=carrier.name_for_number(number,'en')
sim.config(text=service)

query = str(location)
results = OpenCageGeocode(key).geocode(query)

lat = results[0]['geometry']['lat']
lng = results[0]['geometry']['lng']

myMap = folium.Map(location=[lat, lng], Zoom_start=9)

folium.Marker([lat, lng], popup=location).add_to(myMap)
myMap.save("myLocation.html")
try:
enter_nb = entry.get().strip()
if not enter_nb:
country.config(text="Enter a number")
return

# Clean up the input - add + if it starts with a digit (country code)
if enter_nb[0].isdigit():
enter_nb = '+' + enter_nb

# Parse phone number with US as fallback region for numbers without country code
try:
number = phonenumbers.parse(enter_nb, None)
except phonenumbers.NumberParseException:
# Try with US as default region
number = phonenumbers.parse(enter_nb, 'US')

# Get location description
location = geocoder.description_for_number(number, 'en')
if not location:
country.config(text="Location not found")
sim.config(text="Unknown")
return
country.config(text=location)

# Get carrier/SIM info
service = carrier.name_for_number(number, 'en')
sim.config(text=service if service else "Unknown")

# Geocode the location to get coordinates
query = str(location)
results = OpenCageGeocode(key).geocode(query)

if not results:
country.config(text="Could not geocode")
return

lat = results[0]['geometry']['lat']
lng = results[0]['geometry']['lng']

# Create map with correct parameter name (zoom_start, not Zoom_start)
myMap = folium.Map(location=[lat, lng], zoom_start=9)
folium.Marker([lat, lng], popup=location).add_to(myMap)
myMap.save("myLocation.html")

except phonenumbers.NumberParseException:
country.config(text="Invalid number format")
sim.config(text="Use +country code")
except Exception as e:
country.config(text="Error occurred")
print(f"Error: {e}")

def open_map():
webbrowser.open("myLocation.html")
import os
file_path = os.path.abspath("myLocation.html")
if os.path.exists(file_path):
webbrowser.open('file://' + file_path)
else:
country.config(text="Track a number first")

logo =PhotoImage(file="logo.png")
Label(root,image=logo,bg="#96BFFF").place(x=135,y=40)
Expand Down