import ephem import sys plnamelist = ['Mercury', 'Venus', 'Mars', 'Jupiter', 'Saturn', 'Neptune', 'Pluto'] plobjs = [getattr(ephem, pn)() for pn in plnamelist] defobs = ephem.Observer() defobs.name = "Default" defobs.lat = "0" defobs.long = "0" def getconsts(): for p in plobjs: p.compute() sys.stdout.write("%s: %s\n" % (p.name, ephem.constellation(p)[1])) def getpos(obs=defobs, visible=True): for p in plobjs: p.compute(obs) if (visible and p.alt >0): sys.stdout.write("%s: %s, %s\n" % (p.name, p.alt, p.az)) def getrise(obs=defobs, visible=False): for p in plobjs: if not visible and p.alt <0: sys.stdout.write("%s: %s\n" % (p.name, obs.next_rising(p)) ) if __name__ =='__main__': if len(sys.argv) == 2: try: obs = ephem.city(sys.argv[1]) except KeyError: sys.stdout.write("City not found, using default location\n") obs = defobs elif len(sys.argv) > 2: obs = ephem.Observer() obs.lat = sys.argv[1] obs.long = sys.argv[2] obs.name = "Custom" else: obs = defobs sys.stdout.write("Observer: %s\n\n" % obs.name) sys.stdout.write("Planets + Pluto situations:\n") getconsts() sys.stdout.write("\nCurrently visible (altitude, azimuth):\n") getpos() sys.stdout.write("\nRise time (UT):\n") getrise()