Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 17 additions & 6 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,17 @@
from tkinter import messagebox


ALARM_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "alarm", "alarm.wav")
ALARM_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "alarm")
SUPPORTED_FORMATS = (".mp3", ".wav", ".ogg", ".flac")

def get_alarm_path():
if os.path.exists(ALARM_DIR):
for file in os.listdir(ALARM_DIR):
if file.lower().endswith(SUPPORTED_FORMATS):
return os.path.join(ALARM_DIR, file)
return os.path.join(ALARM_DIR, "alarm.wav")

ALARM_PATH = get_alarm_path()

ctk.set_appearance_mode("light")
ctk.set_default_color_theme("blue")
Expand Down Expand Up @@ -261,12 +271,13 @@ def _enterTimesup(self):
self._sendNotification()

def _startAlarm(self):
if not os.path.exists(ALARM_PATH):
print(f"[Warning] Alarm file not found: {ALARM_PATH}")
alarm_path = get_alarm_path()
if not os.path.exists(alarm_path):
print(f"[Warning] Alarm file not found: {alarm_path}")
return
try:
mixer.music.load(ALARM_PATH)
mixer.music.play(loops=-1) # -1 無限循環
mixer.music.load(alarm_path)
mixer.music.play(loops=-1)
except Exception as e:
print(f"[Warning] Failed to play alarm: {e}")

Expand Down Expand Up @@ -309,4 +320,4 @@ def _onCloseWindow(self):
root = ctk.CTk()
app = TimerApp(root)
root.mainloop()