File size: 3,925 Bytes
236e7b6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import streamlit as st
import time
import pytz
from datetime import datetime

# Set page configuration
st.set_page_config(page_title="Countdown Timer", layout="centered")

# Initialize session state for countdown
if "countdown_started" not in st.session_state:
    st.session_state.countdown_started = False
if "start_time" not in st.session_state:
    st.session_state.start_time = 0
if "remaining_time" not in st.session_state:
    st.session_state.remaining_time = 0
if "time_up" not in st.session_state:
    st.session_state.time_up = False

# Title
st.title("🐧 MK316 Quiet Timer ⏳ ")

# Placeholder to display the current time (digital clock)
current_time_placeholder = st.empty()

# Function to display the current time (as a live digital clock)
def display_current_time():
    seoul_tz = pytz.timezone('Asia/Seoul')  # Set timezone to Seoul
    current_time = datetime.now(seoul_tz).strftime("%H:%M:%S")  # Convert to Seoul time
    
    # Style the clock (increase font size and set color)
    current_time_placeholder.markdown(
        f"<h1 style='text-align: center; font-size: 80px; color: #5785A4;'>{current_time}</h1>",  # Green and large font
        unsafe_allow_html=True
    )
    
# Function to start the countdown timer
def start_countdown():
    if not st.session_state.countdown_started:
        st.session_state.remaining_time = st.session_state.start_time
        st.session_state.countdown_started = True
        st.session_state.time_up = False

# Function to reset the countdown timer
def reset_countdown():
    st.session_state.start_time = 0
    st.session_state.remaining_time = 0
    st.session_state.countdown_started = False
    st.session_state.time_up = False

# Input field for countdown time in seconds
st.session_state.start_time = st.number_input("Set Countdown Time (in seconds)", min_value=0, max_value=3600, value=10)

# Add custom button colors using Streamlit's CSS support
# Add custom button colors using Streamlit's CSS support
st.markdown("""
    <style>
    div.stButton > button:first-child {
        background-color: #D5DEDD;
        color: black;
        height: 3em;
        width: 10em;
        border-radius: 10px;
        border: 2px solid #9EA8A7;
        font-size: 20px;
        font-weight: bold;
    }

    div.stButton > button:last-child {
        background-color: #B2E8E2;
        color: black;
        height: 3em;
        width: 10em;
        border-radius: 10px;
        border: 2px solid #13645B;
        font-size: 20px;
        font-weight: bold;
    }

    </style>
""", unsafe_allow_html=True)


# Countdown Start, Stop, and Reset buttons aligned in two columns
col1, col2 = st.columns(2)
with col1:
    if st.button("Start Countdown"):
        start_countdown()
with col2:
    if st.button("Reset Countdown"):
        reset_countdown()

# Placeholder for displaying the countdown time
countdown_placeholder = st.empty()

# Timer countdown loop (only runs when countdown has started)
while True:
    # Update the clock every second
    display_current_time()

    if st.session_state.countdown_started and not st.session_state.time_up:
        # Display countdown time while the countdown is running
        if st.session_state.remaining_time > 0:
            minutes, seconds = divmod(st.session_state.remaining_time, 60)
            countdown_placeholder.write(f"**Remaining Time:** {int(minutes):02d}:{int(seconds):02d}")
            st.session_state.remaining_time -= 1
        else:
            # When the countdown finishes, display the message and play the sound
            st.session_state.time_up = True
            countdown_placeholder.write("⏰ **Time's Up!**")
            st.session_state.countdown_started = False

            # Play the sound using Streamlit's audio player
            audio_file = open("timesup.mp3", "rb")
            st.audio(audio_file.read(), format="audio/mp3")

    # Sleep for a second
    time.sleep(1)