Skip to content
Snippets Groups Projects
simple_alarm_clock.py 1.49 KiB
Newer Older
  • Learn to ignore specific revisions
  • SurajSSingh's avatar
    SurajSSingh committed
    from alarm import BaseAlarmClock, AlarmState
    
    SurajSSingh's avatar
    SurajSSingh committed
    from datetime import time, datetime
    from time import sleep
    
    from pynput import keyboard
    
    SurajSSingh's avatar
    SurajSSingh committed
    
    # Simple Alarm Clock has 5 functionalities:
    # 1. Set Alarm Time - Set the time for the alarm to sound, does NOT make the alarm active
    # 2. Start Alarm    - Make the alarm active, which will run the timer until it reaches the specified time
    # 3. Sound Alarm    - Play the sound for the alarm
    # 4. Snooze Alarm   - Stop the alarm sound and wait for some time to play the alarm again
    # 5. Stop Alarm     - If the alarm is active or is playing, stop the alarm (deactivate state)
    
    
    ALARM_TIME = time(19, 13, 0)
    SNOOZE_KEY = keyboard.Key.up
    ALARM_OFF_KEY = keyboard.Key.esc
    
    SurajSSingh's avatar
    SurajSSingh committed
    SNOOZE_SEC = 5
    
    SurajSSingh's avatar
    SurajSSingh committed
    def simple_alarm_mode(alarm_clock: BaseAlarmClock):
    
        alarm_clock.start_alarm()
        while not alarm_clock.alarm_check_reached():
            print(f"ALARM SLEEPING @: {datetime.now().time()}")
            sleep(1)
        alarm_clock.sound_alarm()
        while alarm_clock.current_state is not AlarmState.DEACTIVATED:
            with keyboard.Events() as events:
                for event in events:
                    if event.key == ALARM_OFF_KEY:
                        alarm_clock.stop_alarm()
                        break
                    elif event.key == SNOOZE_KEY:
                        alarm_clock.snooze_alarm()
    
    SurajSSingh's avatar
    SurajSSingh committed
                        sleep(SNOOZE_SEC)
                        alarm_clock.sound_alarm()
    
    SurajSSingh's avatar
    SurajSSingh committed
    
    
    if __name__ == '__main__':
    
    SurajSSingh's avatar
    SurajSSingh committed
        alarm_clock = BaseAlarmClock(ALARM_TIME)
        simple_alarm_mode(alarm_clock)