#!/usr/bin/env python3
import sys
import math
import ephem
from datetime import datetime, timezone

if len(sys.argv) < 4:
    sys.exit(1)

lat = sys.argv[1]
lon = sys.argv[2]
elev = float(sys.argv[3])

obs = ephem.Observer()
obs.lat = str(lat)
obs.lon = str(lon)
obs.elevation = elev
obs.date = datetime.now(timezone.utc)

moon = ephem.Moon(obs)
sun = ephem.Sun(obs)

az_moon = float(moon.az)
alt_moon = float(moon.alt)
az_sun = float(sun.az)
alt_sun = float(sun.alt)

az_deg = math.degrees(az_moon)
alt_deg = math.degrees(alt_moon)

dist_km = float(moon.earth_distance) * 149597870.7
phase_pct = float(moon.phase)

# Differenz im Horizontalsystem (Azimut & Höhe)
d_az = (az_sun - az_moon + math.pi) % (2.0 * math.pi) - math.pi
d_alt = alt_sun - alt_moon

# Richtungswinkel zur Sonne auf dem Bildschirm (0 Grad = Oben/Zenit, +90 Grad = Rechts)
angle_sun_rad = math.atan2(d_az * math.cos(alt_moon), d_alt)
angle_sun_deg = math.degrees(angle_sun_rad)

diff_ra = math.degrees(float(moon.ra - sun.ra)) % 360.0
if phase_pct > 97.0:
    phase_str = "VOLLMOND"
elif phase_pct < 3.0:
    phase_str = "NEUMOND"
elif diff_ra < 180.0:
    phase_str = "ZUNEHMEND"
else:
    phase_str = "ABNEHMEND"

print(f"{az_deg:.2f} {alt_deg:.2f} {dist_km:.0f} {phase_pct:.1f} {phase_str} {angle_sun_deg:.2f}")
