日你妈
This commit is contained in:
parent
aa0cae3cdc
commit
f57fae691a
127
main.py
127
main.py
@ -4,7 +4,6 @@ import random
|
|||||||
import hashlib
|
import hashlib
|
||||||
import datetime
|
import datetime
|
||||||
import threading
|
import threading
|
||||||
from typing import Callable
|
|
||||||
|
|
||||||
from tkinter import font, ttk, END
|
from tkinter import font, ttk, END
|
||||||
import tkinter
|
import tkinter
|
||||||
@ -23,6 +22,23 @@ from pyglet import media as pyglet_media
|
|||||||
|
|
||||||
logger = config.get_logger("main")
|
logger = config.get_logger("main")
|
||||||
|
|
||||||
|
|
||||||
|
class TimeChecker:
|
||||||
|
"""用于检查时间, 比如还有多久上课, 还有多久下课等"""
|
||||||
|
def __init__(self):
|
||||||
|
self.class_lst = []
|
||||||
|
self.rest_lst = []
|
||||||
|
|
||||||
|
def rest_time(self) -> int:
|
||||||
|
...
|
||||||
|
|
||||||
|
def class_time(self) -> int:
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
TIME_CHCKER = TimeChecker()
|
||||||
|
|
||||||
|
|
||||||
def check_pwd(pwd):
|
def check_pwd(pwd):
|
||||||
global password
|
global password
|
||||||
password = False
|
password = False
|
||||||
@ -75,7 +91,8 @@ def loading():
|
|||||||
image_dict, \
|
image_dict, \
|
||||||
screen_height
|
screen_height
|
||||||
fin = False
|
fin = False
|
||||||
style = Style(theme="newtheme")
|
# style = Style(theme="newtheme")
|
||||||
|
style = Style()
|
||||||
root = style.master
|
root = style.master
|
||||||
style.configure("TButton")
|
style.configure("TButton")
|
||||||
DraggableWindow(root)
|
DraggableWindow(root)
|
||||||
@ -99,12 +116,16 @@ def loading():
|
|||||||
root.update_idletasks() # 刷新
|
root.update_idletasks() # 刷新
|
||||||
root.update()
|
root.update()
|
||||||
c.destroy()
|
c.destroy()
|
||||||
|
fin = True
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
c.destroy()
|
c.destroy()
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
k = tkinter.Label(text="本次共清理了\n" + str(file_counter) + "个文件", font=("宋体", 48))
|
file_counter = 0
|
||||||
|
k = tkinter.Label(
|
||||||
|
text="本次共清理了\n" + str(file_counter) + "个文件", font=("宋体", 48)
|
||||||
|
)
|
||||||
logger.info(f"本次共清理了{file_counter}个文件")
|
logger.info(f"本次共清理了{file_counter}个文件")
|
||||||
k.place(relx=0.5, rely=0.5, anchor="center")
|
k.place(relx=0.5, rely=0.5, anchor="center")
|
||||||
root.update()
|
root.update()
|
||||||
@ -225,7 +246,7 @@ def log(content, rate):
|
|||||||
# f.write("日志处理后sha256:" + file_sha256(r"support/journal.log"))
|
# f.write("日志处理后sha256:" + file_sha256(r"support/journal.log"))
|
||||||
|
|
||||||
|
|
||||||
def on_button_click(content, pppp):
|
def on_button_click(content, do_confirm):
|
||||||
wait_window = tkinter.Toplevel(root)
|
wait_window = tkinter.Toplevel(root)
|
||||||
wait_window.wm_attributes("-topmost", 1)
|
wait_window.wm_attributes("-topmost", 1)
|
||||||
win_width = 400
|
win_width = 400
|
||||||
@ -246,10 +267,10 @@ def on_button_click(content, pppp):
|
|||||||
fg="white",
|
fg="white",
|
||||||
)
|
)
|
||||||
pp.place(rely=0.8, relx=0.3, anchor="center")
|
pp.place(rely=0.8, relx=0.3, anchor="center")
|
||||||
if pppp == "pppp":
|
if do_confirm == "pppp":
|
||||||
ppp = tkinter.Entry(wait_window, width=30, show="*")
|
ppp = tkinter.Entry(wait_window, width=30, show="*")
|
||||||
ppp.place(relx=0.5, rely=0.6, anchor="center")
|
ppp.place(relx=0.5, rely=0.6, anchor="center")
|
||||||
pppp = tkinter.Button(
|
do_confirm = tkinter.Button(
|
||||||
wait_window,
|
wait_window,
|
||||||
text="忽略",
|
text="忽略",
|
||||||
command=lambda: check_pwd(ppp.get()) and wait_window.destroy(),
|
command=lambda: check_pwd(ppp.get()) and wait_window.destroy(),
|
||||||
@ -258,7 +279,7 @@ def on_button_click(content, pppp):
|
|||||||
activebackground="#4472c4",
|
activebackground="#4472c4",
|
||||||
fg="white",
|
fg="white",
|
||||||
)
|
)
|
||||||
pppp.place(relx=0.6, rely=0.8, anchor="center")
|
do_confirm.place(relx=0.6, rely=0.8, anchor="center")
|
||||||
wait_window.wait_window()
|
wait_window.wait_window()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@ -313,8 +334,6 @@ shouldnot = [
|
|||||||
"孙妍",
|
"孙妍",
|
||||||
"王浩楠",
|
"王浩楠",
|
||||||
"张一樵",
|
"张一樵",
|
||||||
"李克强",
|
|
||||||
"蔡奇",
|
|
||||||
"张建波",
|
"张建波",
|
||||||
"任杰",
|
"任杰",
|
||||||
"齐静",
|
"齐静",
|
||||||
@ -341,56 +360,20 @@ shouldnot = [
|
|||||||
"李月",
|
"李月",
|
||||||
"付鹏飞",
|
"付鹏飞",
|
||||||
"王芳",
|
"王芳",
|
||||||
"习近平",
|
|
||||||
"隋亚珍",
|
"隋亚珍",
|
||||||
"特朗普",
|
|
||||||
"郭晶",
|
"郭晶",
|
||||||
"苏瑶",
|
"苏瑶",
|
||||||
"许久辰",
|
"许久辰",
|
||||||
"张三",
|
|
||||||
"李四",
|
|
||||||
"王五",
|
|
||||||
"赵六",
|
|
||||||
"田七",
|
|
||||||
"安倍晋三",
|
"安倍晋三",
|
||||||
"bilibili",
|
"bilibili",
|
||||||
"哔哩哔哩",
|
"哔哩哔哩",
|
||||||
]
|
]
|
||||||
logging.basicConfig(
|
|
||||||
filename=os.getcwd() + "/support/journal.log",
|
|
||||||
filemode="a+",
|
|
||||||
format="%(asctime)s %(name)s:%(levelname)s:%(message)s",
|
|
||||||
datefmt="",
|
|
||||||
level=logging.DEBUG,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class PILFilter(logging.Filter):
|
|
||||||
def filter(self, record):
|
|
||||||
return record.name != "PIL" or record.levelno > logging.DEBUG
|
|
||||||
|
|
||||||
|
|
||||||
handler = logging.StreamHandler()
|
|
||||||
handler.addFilter(PILFilter())
|
|
||||||
|
|
||||||
# 设置日志级别和处理器
|
|
||||||
logging.basicConfig(level=logging.DEBUG, handlers=[handler])
|
|
||||||
|
|
||||||
|
|
||||||
def file_hash(file_path: str, hash_method: Callable) -> str:
|
|
||||||
h = hash_method()
|
|
||||||
with open(file_path, "rb", encoding="utf-8") as f:
|
|
||||||
while True:
|
|
||||||
b = f.read(8192)
|
|
||||||
if not b:
|
|
||||||
break
|
|
||||||
h.update(b)
|
|
||||||
f.close()
|
|
||||||
return h.hexdigest()
|
|
||||||
|
|
||||||
|
|
||||||
def file_sha256(file_path: str) -> str:
|
def file_sha256(file_path: str) -> str:
|
||||||
return file_hash(file_path, hashlib.sha256)
|
with open(file_path, "rb") as f:
|
||||||
|
sha256 = hashlib.sha256(f.read()).hexdigest()
|
||||||
|
return sha256
|
||||||
|
|
||||||
|
|
||||||
def check_class():
|
def check_class():
|
||||||
@ -1530,12 +1513,12 @@ def choice(fromwhere):
|
|||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
if rest() or (not rest() and password):
|
if rest() or (not rest() and password):
|
||||||
logger.info('人名单sha256:' + file_sha256(r'support/1.txt'))
|
logger.info("人名单sha256:" + file_sha256(r"support/1.txt"))
|
||||||
logger.info(f'当前有{len(g_list)}人')
|
logger.info(f"当前有{len(g_list)}人")
|
||||||
password = False
|
password = False
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
on_button_click("没有找到人名单文件或因\n" + str(e), "")
|
on_button_click("没有找到人名单文件或因\n" + str(e), "")
|
||||||
logger.info(f'没有找到人名单文件或因{e}')
|
logger.info(f"没有找到人名单文件或因{e}")
|
||||||
schedule("fromchoice")
|
schedule("fromchoice")
|
||||||
root.quit()
|
root.quit()
|
||||||
try:
|
try:
|
||||||
@ -1639,11 +1622,11 @@ def choice(fromwhere):
|
|||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
chosed.append(r)
|
chosed.append(r)
|
||||||
log("本次抽中" + r, "info")
|
logger.info(f"本次抽中{r}")
|
||||||
with open("support/record.txt", "a+") as p:
|
with open("support/record.txt", "a+") as p:
|
||||||
p.write(r + "\n")
|
p.write(r + "\n")
|
||||||
p.close()
|
p.close()
|
||||||
log("操作后sha256:" + file_sha256(r"support/record.txt"), "info")
|
logger.info("操作后sha256:" + file_sha256(r"support/record.txt"))
|
||||||
inf = tkinter.Label(
|
inf = tkinter.Label(
|
||||||
text=str(len(chosed)) + "/" + info + "。剩余5人时将开启新一轮。",
|
text=str(len(chosed)) + "/" + info + "。剩余5人时将开启新一轮。",
|
||||||
font=("微软雅黑", 10),
|
font=("微软雅黑", 10),
|
||||||
@ -1691,7 +1674,9 @@ def choice(fromwhere):
|
|||||||
file_counter.destroy()
|
file_counter.destroy()
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
file_counter = tkinter.Label(text=g_list[r], width=30, font=("华文行楷", 72))
|
file_counter = tkinter.Label(
|
||||||
|
text=g_list[r], width=30, font=("华文行楷", 72)
|
||||||
|
)
|
||||||
file_counter.place(relx=0.5, rely=0.4, anchor="center")
|
file_counter.place(relx=0.5, rely=0.4, anchor="center")
|
||||||
root.update()
|
root.update()
|
||||||
time.sleep(0.01)
|
time.sleep(0.01)
|
||||||
@ -1700,7 +1685,9 @@ def choice(fromwhere):
|
|||||||
file_counter.destroy()
|
file_counter.destroy()
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
file_counter = tkinter.Label(text=g_list[r], width=30, font=("华文行楷", 72))
|
file_counter = tkinter.Label(
|
||||||
|
text=g_list[r], width=30, font=("华文行楷", 72)
|
||||||
|
)
|
||||||
file_counter.place(relx=0.5, rely=0.4, anchor="center")
|
file_counter.place(relx=0.5, rely=0.4, anchor="center")
|
||||||
root.update()
|
root.update()
|
||||||
time.sleep(0.01)
|
time.sleep(0.01)
|
||||||
@ -1846,7 +1833,7 @@ def schedule(fr):
|
|||||||
listindes = sheet.col_values(index) # 获取age列的所有内容
|
listindes = sheet.col_values(index) # 获取age列的所有内容
|
||||||
except:
|
except:
|
||||||
on_button_click("请确认课程表文件\n存在且格式正确", "")
|
on_button_click("请确认课程表文件\n存在且格式正确", "")
|
||||||
log("课程表文件不存在", "error")
|
logger.error("课程表文件不存在")
|
||||||
root.quit()
|
root.quit()
|
||||||
# 遍历该列所有的内容
|
# 遍历该列所有的内容
|
||||||
style.configure("TButton", font=("华文行楷", 40))
|
style.configure("TButton", font=("华文行楷", 40))
|
||||||
@ -1959,7 +1946,7 @@ def schedule(fr):
|
|||||||
root.wm_attributes("-topmost", 0)
|
root.wm_attributes("-topmost", 0)
|
||||||
|
|
||||||
|
|
||||||
def check_resttime():
|
def check_resttime() -> int:
|
||||||
global zhou, d
|
global zhou, d
|
||||||
try:
|
try:
|
||||||
excel = xlrd.open_workbook("support/时刻表.xls") # 打开excel文件
|
excel = xlrd.open_workbook("support/时刻表.xls") # 打开excel文件
|
||||||
@ -1985,14 +1972,10 @@ def check_resttime():
|
|||||||
return 2400
|
return 2400
|
||||||
|
|
||||||
|
|
||||||
def count():
|
|
||||||
time.sleep(10)
|
|
||||||
|
|
||||||
|
|
||||||
def bsy(fro=None):
|
def bsy(fro=None):
|
||||||
global top
|
global top, btn
|
||||||
if fro is None:
|
# if fro is None:
|
||||||
time.sleep(10)
|
# time.sleep(10)
|
||||||
while isinstance(check_class(), tuple):
|
while isinstance(check_class(), tuple):
|
||||||
try:
|
try:
|
||||||
btn.config(text=check_class()[0][0] + "→" + check_class()[1][0])
|
btn.config(text=check_class()[0][0] + "→" + check_class()[1][0])
|
||||||
@ -2012,7 +1995,7 @@ def bsy(fro=None):
|
|||||||
|
|
||||||
def clean():
|
def clean():
|
||||||
...
|
...
|
||||||
# global fin, file_counter, ll, lose
|
global fin, file_counter, ll, lose
|
||||||
# ll = "正在清理文件"
|
# ll = "正在清理文件"
|
||||||
# fin = False
|
# fin = False
|
||||||
# file_counter = 0
|
# file_counter = 0
|
||||||
@ -2053,7 +2036,7 @@ def clean():
|
|||||||
# file_counter = file_counter + 1
|
# file_counter = file_counter + 1
|
||||||
# else:
|
# else:
|
||||||
# ll = filename + "未到过期时间"
|
# ll = filename + "未到过期时间"
|
||||||
# ll = "正在检查程序组件"
|
ll = "正在检查程序组件"
|
||||||
# x = os.listdir("support")
|
# x = os.listdir("support")
|
||||||
# list = [
|
# list = [
|
||||||
# "temp.txt",
|
# "temp.txt",
|
||||||
@ -2065,7 +2048,7 @@ def clean():
|
|||||||
# "record.txt",
|
# "record.txt",
|
||||||
# "config.ini",
|
# "config.ini",
|
||||||
# ]
|
# ]
|
||||||
# lose = []
|
lose = []
|
||||||
# for y in list:
|
# for y in list:
|
||||||
# ll = "检查" + y
|
# ll = "检查" + y
|
||||||
# if y in x:
|
# if y in x:
|
||||||
@ -2073,7 +2056,7 @@ def clean():
|
|||||||
# else:
|
# else:
|
||||||
# ll = "缺少" + y
|
# ll = "缺少" + y
|
||||||
# lose.append(y)
|
# lose.append(y)
|
||||||
# fin = True
|
fin = True
|
||||||
|
|
||||||
|
|
||||||
speed = 50
|
speed = 50
|
||||||
@ -2087,6 +2070,10 @@ t2 = threading.Thread(
|
|||||||
) # 定义线程t2,线程任务为调用task2函数,task2函数无参数
|
) # 定义线程t2,线程任务为调用task2函数,task2函数无参数
|
||||||
t3 = threading.Thread(target=bsy, name="bsy")
|
t3 = threading.Thread(target=bsy, name="bsy")
|
||||||
t1.start() # 开始运行t1线程
|
t1.start() # 开始运行t1线程
|
||||||
t2.start() # 开始运行t2线程
|
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
t3.start()
|
t2.start() # 开始运行t2线程
|
||||||
|
# t3.start()
|
||||||
|
on_button_click(
|
||||||
|
"人名单文件的sha256值\n与上次不一致。\n请确认人名单是否被篡改。\n按确定以继续。",
|
||||||
|
"",
|
||||||
|
)
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
时间表
|
||||||
|
08:00-08:40
|
||||||
|
08:55-09:35
|
||||||
|
09:35-09:35
|
||||||
|
10:05-10:45
|
||||||
|
10:45-10:45
|
||||||
11:00-11:40
|
11:00-11:40
|
||||||
11:40-11:40
|
11:40-11:40
|
||||||
13:00-13:40
|
13:00-13:40
|
||||||
@ -6,3 +12,17 @@
|
|||||||
14:50-15:30
|
14:50-15:30
|
||||||
15:45-16:25
|
15:45-16:25
|
||||||
16:35-17:15
|
16:35-17:15
|
||||||
|
时刻表
|
||||||
|
07:00-08:40
|
||||||
|
08:40-09:35
|
||||||
|
09:35-09:35
|
||||||
|
09:35-10:45
|
||||||
|
10:45-10:45
|
||||||
|
10:45-11:40
|
||||||
|
11:40-11:40
|
||||||
|
11:40-13:40
|
||||||
|
13:40-13:40
|
||||||
|
13:40-14:35
|
||||||
|
14:35-15:30
|
||||||
|
15:30-16:25
|
||||||
|
16:25-17:15
|
||||||
|
Loading…
Reference in New Issue
Block a user