fasebulan.py

Download
# fasebulan.py
from skyfield.api import load
from skyfield import almanac

def hitung_fase_bulan():
    eph = load('de421.bsp')
    
    ts = load.timescale()
    waktu_sekarang = ts.now()

    # Menggunakan fungsi fraction_illuminated bawaan almanac skyfield
    fase_persen = almanac.fraction_illuminated(eph, 'moon', waktu_sekarang) * 100

    print("=== FASE BULAN ===")
    print(f"Waktu UTC : {waktu_sekarang.utc_datetime().strftime('%Y-%m-%d %H:%M:%S')}")
    print(f"Iluminasi : {fase_persen:.2f}%")
    
    if fase_persen < 1.0:
        print("Status    : Konjungsi / Bulan Baru (New Moon)")
    elif fase_persen > 99.0:
        print("Status    : Oposisi / Bulan Purnama (Full Moon)")

if __name__ == "__main__":
    hitung_fase_bulan()