알고리즘
간단함
현재 시간을 관리하는 모듈(getCurrentTime)을 불러오고,
DB에 저장된 시간 / 요일과 일치하(거나 5분 전)이 되면,
음악 소리를 울리면서, 과목에 대한 정보를 알려주는 팝업창을 띄우면 된다.
계속 실행시키는 함수를 만들자 (+백그라운드 실행 필요함)
step 1. 현재 시간을 알아내는 법
import time, datetime
tm = time.localtime(time.time())
print("year:", tm.tm_year)
print("month:", tm.tm_mon)
print("day:", tm.tm_mday)
print("hour:", tm.tm_hour)
print("minute:", tm.tm_min)
print("second:", tm.tm_sec)
def get_today_days():
days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
return days[datetime.datetime.today().weekday()]
print(get_today_days())
# 시간 분까지 일치하면 굿 :ㅇ
step 2. 시간 비교해서 알람 울리고, 줌에 접속하기
import os
import sys
import time
import threading
import datetime
import json
import webbrowser
# 시각 구하기
dy_lis = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
xc = datetime.datetime.now()
t = time.localtime()
yr = str(t.tm_year) # 년
mo = str(t.tm_mon) # 월
dt = str(t.tm_mday) # 일
dy = dy_lis[t.tm_wday]
now_time = time.strftime("%H:%M", t)
# 알람 울릴 시간 구하기
full_next_time = '20221280913'
full_next_time = datetime.datetime.strptime(full_next_time, "%Y%m%d%H%M")
print(mo)
print(now_time)
print(full_next_time)
min_left = full_next_time - xc
min_left = min_left.seconds/60
print(min_left)
# 수업 접속하기
subject = '인터뷰'
professor = '토마토'
id = ''
pw = ''
url = 'zoommtg://zoom.us/join?confno={}&pwd={}'.format(id, pw)
# 수업에 접속하기
if 0 <= min_left <= 5:
webbrowser.open(url)
elif 10 <= min_left < 11:
pass
else:
pass
step 3. pyqt와 연결하기
pyqt 메인 클래스 내부 함수를 생성한다.
def check_alarm(self):
# 현재 시각을 구한다.
dy_lis = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
xc = datetime.datetime.now()
t = time.localtime()
yr = str(t.tm_year) # 년
mo = str(t.tm_mon) # 월
if len(mo) == 1:
mo = '0' + mo
dt = str(t.tm_mday) # 일
dy = dy_lis[t.tm_wday]
print(yr, mo, dt, dy)
# 알람 울릴 다음 시간과 줌 접속 정보를 가져온다.
today_alarm_list = []
now_time = time.strftime("%H:%M", t)
now_time = datetime.datetime.strptime(now_time, "%H:%M")
for row in self.db.cursor.execute('SELECT * FROM zoomlist ORDER BY DAYLIST'):
if dy == row[0]: # 같은 요일만 추출함
print(row[0])
alarm_time = yr + mo + dt + row[1]
alarm_time = datetime.datetime.strptime(alarm_time, "%Y%m%d%H:%M")
today_alarm_list.append([row, alarm_time])
# 그 중에서 현재 시각과 가장 가깝고 * 아직 지나지 않은 시간을 찾아낸다.
next_time = [[],[]]
for i, j in today_alarm_list:
if now_time <= j:
next_time[0].append(j)
next_time[1].append(i)
next_time_index = next_time[0].index(min(next_time[0]))
print(next_time[1][next_time_index])
subject = next_time[1][next_time_index][2]
zoomid = next_time[1][next_time_index][3]
zoompw = next_time[1][next_time_index][4]
sound = next_time[1][next_time_index][4]
# 수업에 접속한다.
url = 'zoommtg://zoom.us/join?confno={}&pwd={}'.format(zoomid, zoompw)
min_left = 0
print(subject, zoomid, zoompw, sound)
# 수업에 접속하기
if 0 <= min_left <= 5:
webbrowser.open(url)
if sound == 1:
#playsound('sounds/alarm.wav', block=False)
pass
else:
pass
msg = QMessageBox()
msg.setWindowTitle('수업 시작합니다')
msg.setText('')
msg.setStandardButtons(QMessageBox.Ok)
result = msg.exec_()
if result == QMessageBox.Ok:
pass
elif 10 <= min_left < 11:
pass
else:
pass
참고자료
파이썬 알람 만들기(pygame, tkinter) (tistory.com)
Alarm_clock | Just an Alarm Clock is written in PyQt5. (openweaver.com)
'Computer Science > Database' 카테고리의 다른 글
W3Schools SQL | #0 Introduction to SQL (0) | 2022.10.27 |
---|---|
[에러] ERROR 2002 (HY000): Can't connect to local MySQL server through socket ''/var/run/mysqld/mysqld.sock' (2) 에러 해결 (0) | 2022.08.23 |
SQL | # 4 함수 : 함수로 데이터를 쉽게 가공하기 (0) | 2022.01.27 |
# 3 | PyQt와 sqlite3 연결하기 (0) | 2022.01.26 |
SQL | #3 SELECT 문법, WHERE 절 (0) | 2022.01.26 |