Files
siege-calendar/utils/utils.py
2025-09-07 21:45:56 +02:00

50 lines
1.2 KiB
Python

import sys
from datetime import date, datetime
def getchar():
try:
import msvcrt
ch = msvcrt.getch()
try:
return ch.decode()
except UnicodeDecodeError:
return ch
except ImportError:
import tty, termios
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(fd)
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
def is_valid_date(date_str: str) -> bool:
try:
datetime.strptime(date_str, "%Y-%m-%d")
return True
except ValueError:
return False
def get_siege_days_passed(current_date=None):
if current_date is None:
current_date = date.today()
start = date(2025, 9, 1)
return (current_date - start).days
def siege_week(current_date=None):
week = get_siege_days_passed(current_date) // 7
if week < 0:
return "Not started yet"
elif week < 3:
return f"Prep Week {week + 1}"
elif week < 13:
return f"Siege Week {week - 2}"
else:
return "Event finished"