import argparse from configparser import ConfigParser from datetime import datetime, timezone import sys from suntime import Sun, SunTimeException from xdg import xdg_config_home def get_location(args): config = ConfigParser() config_location = xdg_config_home().joinpath("auto-dark-mode", "config") config.read(config_location) if args.latitude and args.longitude: return latitude, longitude try: latitude = config.getfloat("DEFAULT", "latitude") longitude = config.getfloat("DEFAULT", "longitude") except KeyError: sys.exit(f"Please supply latitude and longitude with the --latitude and --longtide flags, or set them in {config_location}") return latitude, longitude if __name__ == "__main__": parser = argparse.ArgumentParser(description="Check if we're in day (after sunrise but before sunset) or night (after sunset but before sunrise) time") parser.add_argument("--day", action="store_true", default=False, help="return successfully if it's day") parser.add_argument("--night", action="store_true", default=True, help="return successfully if it's night (default)") parser.add_argument("--latitude", type=float, help="specify your latitude") parser.add_argument("--longitude", type=float, help="specify your longitude") args = parser.parse_args() latitude, longitude = get_location(args) sun = Sun(latitude, longitude) utc_now = datetime.now(timezone.utc) if utc_now > sun.get_sunrise_time() and utc_now < sun.get_sunset_time(): if not args.day: sys.exit(1) else: if args.day: sys.exit(1)