from phonenumbers import timezone, geocoder, carrier
import requests
import tkinter as tk
from tkinter import ttk
class PhoneInfoApp:
def __init__(self, master):
self.master = master
self.master.title("Phone Number Information")
# Create and place widgets
self.label = ttk.Label(master, text="Enter your number with +__: ")
self.label.grid(row=0, column=0, padx=10, pady=10)
self.entry = ttk.Entry(master)
self.entry.grid(row=0, column=1, padx=10, pady=10)
self.info_button = ttk.Button(master, text="Get Info", command=self.get_phone_info)
self.info_button.grid(row=1, column=0, columnspan=2, pady=10)
self.result_label = ttk.Label(master, text="")
self.result_label.grid(row=2, column=0, columnspan=2, pady=10)
self.history_label = ttk.Label(master, text="History:")
self.history_label.grid(row=3, column=0, columnspan=2, pady=10)
self.history_listbox = tk.Listbox(master, selectmode=tk.SINGLE, width=40, height=5)
self.history_listbox.grid(row=4, column=0, columnspan=2, pady=10)
self.load_history_button = ttk.Button(master, text="Load History", command=self.load_history)
self.load_history_button.grid(row=5, column=0, pady=5)
self.save_history_button = ttk.Button(master, text="Save History", command=self.save_history)
self.save_history_button.grid(row=5, column=1, pady=5)
# Load initial history
self.load_history()
def get_phone_info(self):
number = self.entry.get()
phone = phonenumbers.parse(number)
try:
# Online lookup using Numverify API (replace 'YOUR_API_KEY' with your actual API key)
api_key = 'YOUR API KEY'
url = f'YOUR API URL ={api_key}&number={number}'
response = requests.get(url)
data = response.json()
if data['valid']:
time = timezone.time_zones_for_number(phone)
car = carrier.name_for_number(phone, "en")
reg = geocoder.description_for_number(phone, "en")
result_text = f"Phone: {phone}\nTimezone: {time}\nCarrier: {car}\nRegion: {reg}\n\nOnline Info:\n{data}"
self.result_label.config(text=result_text)
# Add to history
history_entry = f"{number} - {car}, {reg}"
self.history_listbox.insert(0, history_entry)
else:
self.result_label.config(text="Invalid phone number. Please enter a valid number.")
except requests.RequestException as e:
print(f"Error during online lookup: {e}")
self.result_label.config(text="Error during online lookup. Please try again.")
def load_history(self):
# Load history from a file or database (in this example, a simple list is used)
history_data = []
for entry in history_data:
self.history_listbox.insert(tk.END, entry)
def save_history(self):
# Save history to a file or database
history_data = [self.history_listbox.get(idx) for idx in range(self.history_listbox.size())]
# In a real application, you would save history_data to a file or database
# Here, we'll just print it for demonstration purposes
print("Saving History:")
for entry in history_data:
print(entry)
if __name__ == "__main__":
root = tk.Tk()
app = PhoneInfoApp(root)
root.mainloop()
Comments
Post a Comment