#!/usr/bin/env python3
import warnings
from datetime import datetime
from astropy.coordinates import SkyCoord, FK5
from astropy.time import Time
import astropy.units as u
from erfa import ErfaWarning

# ERFA-Warnung wegen überschriebener Distanz stummschalten
warnings.simplefilter("ignore", category=ErfaWarning)

def calculate_arktur_now():
    now_utc = Time.now()
    local_time = datetime.now().strftime("%d.%m.%Y um %H:%M:%S Uhr")

    # Catalog-Daten J2000.0 für Arktur (mit Parallaxe oder lightyear)
    arktur_j2000 = SkyCoord(
        ra="14h15m39.7s",
        dec="+19d10m57s",
        distance=(36.71 * u.lightyear),  # ODER: distance=Distance(parallax=88.85 * u.mas)
        pm_ra_cosdec=-1093.9 * u.mas / u.yr,
        pm_dec=-1999.4 * u.mas / u.yr,
        frame="icrs",
        obstime=Time("J2000.0")
    )

    # 1. Eigenbewegung anwenden
    arktur_pm = arktur_j2000.apply_space_motion(new_obstime=now_utc)

    # 2. Präzession auf das aktuelle Äquinoktium umrechnen
    arktur_apparent = arktur_pm.transform_to(FK5(equinox=now_utc))

    # Formatierung
    ra_j2000 = arktur_j2000.ra.to_string(unit=u.hour, sep=('h ', 'm ', 's'), precision=2)
    dec_j2000 = arktur_j2000.dec.to_string(unit=u.degree, sep=('° ', "' ", "''"), precision=1, alwayssign=True)

    ra_app = arktur_apparent.ra.to_string(unit=u.hour, sep=('h ', 'm ', 's'), precision=2)
    dec_app = arktur_apparent.dec.to_string(unit=u.degree, sep=('° ', "' ", "''"), precision=1, alwayssign=True)

    print("=" * 50)
    print(f" AKTUELLE KOORDINATEN FÜR ARKTUR (alpha Boo)")
    print(f" Berechnet am: {local_time}")
    print("=" * 50)
    print(f" Katalogwerte J2000.0 : RA = {ra_j2000} | Dec = {dec_j2000}")
    print(f" RA/DE (des Datums)   : RA = {ra_app} | Dec = {dec_app}")
    print("-" * 50)

if __name__ == "__main__":
    calculate_arktur_now()
