Skip to content

Commit b89196e

Browse files
committed
Last Sync: 2025-06-27 12:49 (Mobile)
1 parent ce41911 commit b89196e

File tree

3 files changed

+27
-46
lines changed

3 files changed

+27
-46
lines changed

mods/get_keps.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,13 @@ def get_keps(sat_group:str, file_format:str, force_dl=False, max_days=7.0):
88
file_format: str -> Format of the downloaded data,
99
max_days: float -> Maximum amount of days before redownloading file (Default: 7.0)"""
1010
data_dir = os.path.join('.', 'data', 'keps')
11-
s_group = sat_group
12-
kep_format = file_format
13-
file_name = f"{s_group}.{kep_format}"
11+
file_name = f"{sat_group}.{file_format}"
1412
# Check if data directory exists.
1513
if os.path.exists(data_dir):
1614
file_path = os.path.join(data_dir, file_name)
17-
m_days = max_days
18-
url_base = "https://celestrak.org/NORAD/elements/gp.php"
19-
url_opt = f"?GROUP={s_group}&FORMAT={kep_format}"
20-
url = url_base + url_opt
21-
if not load.exists(file_path) or load.days_old(file_path) >= m_days or force_dl:
15+
u_base = "https://celestrak.org/NORAD/elements/gp.php"
16+
url = u_base + f"?GROUP={sat_group}&FORMAT={file_format}"
17+
if not load.exists(file_path) or load.days_old(file_path) >= max_days or force_dl:
2218
if force_dl: print("Downloading...")
2319
load.download(url, filename=file_path)
2420
return file_path

mods/get_sat.py

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@
66
from mods.import_sat import import_satellites
77
from mods.get_keps import get_keps
88

9-
109
# Function loads local keps file, reads it, calculates, returns in list/dict
11-
def get_sat(norad_id, usr_lat, usr_lon, usr_minalt):
10+
def get_sat(norad_id:int, usr_lat:float, usr_lon:float, usr_minalt:float):
1211
"""get_sat(norad_id: int -> NORAD ID,
1312
usr_lat: float -> Latitude,
1413
usr_lon: float -> Longitude,
@@ -17,11 +16,6 @@ def get_sat(norad_id, usr_lat, usr_lon, usr_minalt):
1716
file_path = get_keps(sat_group='amateur', file_format='csv')
1817
with load.open(file_path, mode='r') as f:
1918
data = list(csv.DictReader(f))
20-
# Converting function inputs
21-
sat_id = int(norad_id)
22-
lat_float = float(usr_lat)
23-
lon_float = float(usr_lon)
24-
min_alt = float(usr_minalt)
2519
# Setting Timescale/Datetime/Timezone
2620
t_s = load.timescale()
2721
local_tz = pytz.timezone('America/Detroit')
@@ -32,21 +26,21 @@ def get_sat(norad_id, usr_lat, usr_lon, usr_minalt):
3226
# Parsing Keps and returning easily callable data.
3327
earth_sats = [EarthSatellite.from_omm(t_s, fields) for fields in data]
3428
by_number = {sat.model.satnum: sat for sat in earth_sats}
35-
main_satellite = by_number[sat_id]
36-
my_pos = wgs84.latlon(lat_float, lon_float)
29+
main_satellite = by_number[norad_id]
30+
my_pos = wgs84.latlon(usr_lat, usr_lon)
3731
# Using parsed kep-data to make a few lists to allow easier access to the information.
3832
sat_data = []
3933
sat_info = []
4034
for sat in earth_sats:
41-
if sat.model.satnum == sat_id:
35+
if sat.model.satnum == norad_id:
4236
sat_info.append(sat.name)
4337
sat_dict = {
4438
"Name": sat.name,
4539
"NORAD": sat.model.satnum
4640
}
4741
sat_data.append(sat_dict)
4842
# Finding events using the two set timescales (Current time + 24hours)
49-
t, sat_events = main_satellite.find_events(my_pos, t0, t1, altitude_degrees=min_alt)
43+
t, sat_events = main_satellite.find_events(my_pos, t0, t1, altitude_degrees=usr_minalt)
5044
event_names = 'Rises', 'Culminates', 'Sets'
5145
pass_limit = 1
5246
format_str = "%b %d, %Y at %I:%M:%S %p"
@@ -74,7 +68,7 @@ def get_sat(norad_id, usr_lat, usr_lon, usr_minalt):
7468
# Scans through satinfo.txt, finds inputted NORAD, returns additional information
7569
# Uplink frequency, Downlink frequency, Transmitter mode.
7670
for more in sat_import:
77-
if int(more.get("NORAD")) != sat_id: continue
71+
if int(more.get("NORAD")) != norad_id: continue
7872
more_dict = {
7973
"Uplink": more.get("Uplink"),
8074
"Downlink": more.get("Downlink"),

mods/gui.py

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12,38 +12,29 @@ def start_gui():
1212
sat_import = import_satellites()
1313
sat_options = []
1414
# Adds to list for combo box options
15-
for info_sat in sat_import:
16-
info_name = info_sat.get("Name")
17-
info_norad = info_sat.get("NORAD")
18-
info_con = f"{info_name}: {info_norad}"
19-
sat_options.append(info_con)
15+
for nfo in sat_import:
16+
sat_options.append(f"{nfo.get('Name')}: {nfo.get('NORAD')}")
2017

2118

22-
def show_selected_item(in_lat, in_lon, min_elev):
19+
def show_selected_item(in_lat:float, in_lon:float, min_elev:float):
2320
"""Calls getSat function and displays returned data"""
2421
selected_item = combo_box.get()
2522
if selected_item:
2623
sat_sep = selected_item.replace(" ", "").split(":")
27-
sat_id = int(sat_sep[1])
28-
sat_data = get_sat(sat_id, usr_lat=in_lat, usr_lon=in_lon, usr_minalt=min_elev)
29-
# Parsing getSat list data into own variables
30-
sat_name = sat_sep[0]
31-
rise_data = sat_data[1]
32-
culm_data = sat_data[2]
33-
set_data = sat_data[3]
34-
more_info = sat_data[4]
24+
norad = int(sat_sep[1])
25+
name = sat_sep[0]
26+
sat_data = get_sat(norad, in_lat, in_lon, min_elev)
3527
combo_box.set(selected_item)
3628
# Setting variables from getSat
37-
d_lat, d_lon = float(in_lat), float(in_lon)
38-
r_el, m_el, s_el = rise_data.get("Elev"), culm_data.get("Elev"), set_data.get("Elev")
39-
r_dx, c_dx, s_dx = rise_data.get("Distance"), culm_data.get("Distance"), set_data.get("Distance")
40-
r_dt, c_dt, s_dt = rise_data.get("When"), culm_data.get("When"), set_data.get("When")
41-
u_link, d_link, mode = more_info.get("Uplink"), more_info.get("Downlink"), more_info.get("Mode")
29+
r_el, m_el, s_el = sat_data[1].get("Elev"), sat_data[2].get("Elev"), sat_data[3].get("Elev")
30+
r_dx, c_dx, s_dx = sat_data[1].get("Distance"), sat_data[2].get("Distance"), sat_data[3].get("Distance")
31+
r_dt, c_dt, s_dt = sat_data[1].get("When"), sat_data[2].get("When"), sat_data[3].get("When")
32+
up, down, mode = sat_data[4].get("Uplink"), sat_data[4].get("Downlink"), sat_data[4].get("Mode")
4233
# Displayed Info ================
43-
text_area.insert(tk.INSERT, f" Name: {sat_name}")
44-
text_area.insert(tk.INSERT, f"\n NORAD: {sat_id}\n")
45-
text_area.insert(tk.INSERT, f" Lat: {d_lat} | Lon: {d_lon}\n")
46-
text_area.insert(tk.INSERT, f" Up: {u_link} | Down: {d_link}\n")
34+
text_area.insert(tk.INSERT, f" Name: {name}")
35+
text_area.insert(tk.INSERT, f"\n NORAD: {norad}\n")
36+
text_area.insert(tk.INSERT, f" Lat: {in_lat} | Lon: {in_lon}\n")
37+
text_area.insert(tk.INSERT, f" Up: {up} | Down: {down}\n")
4738
text_area.insert(tk.INSERT, f" Mode: {mode}\n")
4839
text_area.insert(tk.INSERT, "____________ Next Pass ___________" + "\n\n")
4940
text_area.insert(tk.INSERT, f" ● Rise\n | Elevation: {r_el}\n | Distance: {r_dx}\n | When: {r_dt}\n\n")
@@ -64,9 +55,9 @@ def button_click():
6455
else:
6556
text_area.config(state=tk.NORMAL)
6657
text_area.delete('1.0', tk.END)
67-
e_lat = lat_entry.get()
68-
e_lon = long_entry.get()
69-
e_ele = elev_entry.get()
58+
e_lat = float(lat_entry.get())
59+
e_lon = float(long_entry.get())
60+
e_ele = float(elev_entry.get())
7061
show_selected_item(in_lat=e_lat, in_lon=e_lon, min_elev=e_ele)
7162

7263
# Create the main application window

0 commit comments

Comments
 (0)