|
import gradio as gr |
|
import datetime |
|
import pytz |
|
|
|
introduce = """ |
|
<h1 align="center">社区签到系统</h1> |
|
<p align="center">要求每日签到,七天未签到者踢出组织</p> |
|
""" |
|
|
|
|
|
def get_log() -> list[str]: |
|
with open("log.txt", "r", encoding="utf8") as f: |
|
return f.read() |
|
|
|
|
|
def set_timezone(): |
|
now = datetime.datetime.now() |
|
beijing = pytz.timezone("Asia/Shanghai") |
|
return now.astimezone(beijing) |
|
|
|
|
|
NICKNAME = [ |
|
['ZYeon',], |
|
['gutenmorgen', 'gtmg'], |
|
['liusu',], |
|
['graci', 'gracilaria'] |
|
] |
|
def last_signin(name) -> str: |
|
for nn in NICKNAME: |
|
if name in nn: |
|
for line in get_log(): |
|
nameInLog = line[3 : line.find(',')] |
|
if nameInLog in nn: |
|
return line[line.find('时间:')+3 : -1] |
|
|
|
return '' |
|
|
|
|
|
def add_log(name:str) -> None: |
|
with open("log.txt", "a", encoding="utf8") as f: |
|
f.write("昵称: " + (name+',').ljust(10) + "时间: " + str(set_timezone()) + "\n") |
|
|
|
|
|
def signin(name): |
|
last_time = last_signin(name) |
|
add_log(name) |
|
return name + "已签到。\n上一次签到时间:" + last_signin |
|
|
|
|
|
with gr.Blocks() as system: |
|
with gr.Row(): |
|
gr.HTML(introduce) |
|
with gr.Row(): |
|
with gr.Column(): |
|
name=gr.Textbox(label="name") |
|
sign_button=gr.Button("签到") |
|
with gr.Column(): |
|
output=gr.Textbox(label="output",interactive=False) |
|
get_button=gr.Button("查看日志") |
|
|
|
get_button.click(get_log,inputs=[],outputs=[output]) |
|
sign_button.click(signin,inputs=[name],outputs=[output]) |
|
|
|
|
|
|
|
system.launch() |
|
|