from skyfield.api import Topos, load TEL_AVIV = Topos('32.0853 N', '34.7817 E') ISS = "ISS (ZARYA)" class Predictions(object): def __init__(self, lat, lng, tz="UTC", satellite=ISS): self.lat = lat self.lng = lng self.tz = tz self.satellite = satellite def init_stations(self): stations_url = 'http://celestrak.com/NORAD/elements/stations.txt' return load.tle_file(stations_url) def get_next_days_timescale(self, days=10): ts = load.timescale() t0 = ts.now() t1 = ts.ut1_jd(t0.ut1 + days) return t0, t1 def get_predictions(self, location=TEL_AVIV, satellite_name=ISS): satellites = self.init_stations() by_name = {sat.name: sat for sat in satellites} satellite = by_name[satellite_name] t0, t1 = self.get_next_days_timescale() t, events = satellite.find_events(location, t0, t1, altitude_degrees=30.0) print(t) print(events) for ti, event in zip(t, events): name = ('rise above 30°', 'culminate', 'set below 30°')[event] print(ti.utc_strftime('%Y %b %d %H:%M:%S'), name)