Spaces:
Running
Running
Update src/script.py
Browse files- src/script.py +13 -6
src/script.py
CHANGED
|
@@ -9,13 +9,20 @@ from flask import Flask, render_template, request, jsonify
|
|
| 9 |
import socket
|
| 10 |
from xpinyin import Pinyin
|
| 11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
app = Flask(__name__)
|
| 13 |
p = Pinyin()
|
| 14 |
|
| 15 |
STUDENTS_DATA = []
|
| 16 |
STUDENTS_FILE = "students.json"
|
| 17 |
-
DOT_NOTIFY_URL = "https://dot.mindreset.tech/api/open/text"
|
| 18 |
-
DOT_AUTH_TOKEN = "
|
|
|
|
| 19 |
DOT_ICON = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAEj0lEQVR4nO2YXYhVVRTHf/fOTI2Og2apo6IDpZNFZkUfplRYPURRCX0oigZWlPQgEUlRhhVBUA+h9ZAWRBJFX2IPfuLLJGlFYkb6YGWNIPYxpKmYOjO3h/Vfs/c9c+49Z65jQcyCyz37Y/33f6+99lrrHBiU/7kUBgijmILVo99/JgWgLmNOMceczEVqkSLBOk3AlcBUoBnoBg4AO4EfUuafdXGLDAeWA38ApQq/zcDNml9gYFwqF7kZwH6R+AZYAkwHLsIsOQf4ICK6guCnZ41kUf83AieBY8DcDJ2pwOcYyTUEvx1wkr77FuBX7Fgvi8bqtXCRcDHqNX4usFYkn1XfGV2cNHHANVpoltrnZOg5yWHAPuBv4EL1FVM1ahAHmiByn6rdkFPfSd4n/VcS/WcsDdjxPqoFbiJfDHTxizEE+B34WeTSgnsfqWTmAsGvukXsWqAL2C29Uk6CJeGcAr4AWoGRhLhYR5WLk0awTqBdIue7n4BdkD/VX0k/Da9HOt8JuxUL8CX1uxEy8XxCM/AgsAn4Ddt9CQstq7FQExOoRg6gEZgH7CLExi6gA3gfuCMPnpObj/lKSf/rgVWE3ftvI9BWBdT77gR+ifROCW81duTe/xUW7PvgxQ7/qibvAm6n/KbO0dgi4EU9H8EuTRLUn5/UvD3AvUAnsDexkRbgmYjowiSePyzXhJWJxer1GwWcwCwKcAtwGDhKCNp1ke5jwntP7XvUXqY5jZT73OWE9HlrkuR1GnhXbb/FhcTElwlWBPPFbqxyiUPHFM3bpHljMOsdAUYTakhfy0+qTZs+iBUjvTd7mwCaCOkqFgdsAr4Xqbs0tkxk5kYbWYf52jDgPIKvPZC0TCSelR7W3KU+cCnB9FA5wjvpydjtKwFPAedjuXm7xkcSMsbVWE1YAl6oQg6CERqAQ8CPPvdxAVxCuemrkWwF2qV3ELP+aeAG4Gn1/6T/k8AjGeRc3DirpHsxwDtYEh8a7aSaxL6zEKsHT2PBOI5xncAbWI0Y62UR9LTag0USPsaOKF44S5KLPSfAJ4CPRHhsNJ43b7sF52EbnV3EUtdw7ALklR5sI42U3/jXgS3RQl4XdqdgVJICFtIAjhWBrwXSRrYPxuJZwSucLj0f0PhV9P9FyV3kerX3AUwkvDdA/jrNw9E4Ed2s/gvU/qSfeG6cZuAvzLd73W0tdtvG9wPU49ab2AZvi8beUt+0GvCel+6CmHkbdkTthKjeQHrAjt837hfYBrW9rhuPWWEvMCKBF19Cx/M1ZxHeFD0z9d6whwjvsi0JYmnV7yJCvBtLOCLH89y7EwvuWXizsVPsRPGPyEAOuligR7FKZGICZChWJKwnVCmTkmAR3gKC47+E5eiYWCMwE/hQczqwyj2JVwY6A9gRAXcAX2L14PGo/zUsPKWCRXhXYKHH9Q5htd+3mBt4/9tYURHr9jGzv4OApa27taMxWLbZD2wFPsOKUCdXKZzEeNdgBcZ0rKLxbzjtWHGR+ztO3jiY9wtBrre3SnjVFF3Bc2y8WC3f/hzPj9TXrxVvUAblX5F/AN1tJCuIaUiQAAAAAElFTkSuQmCC"
|
| 20 |
|
| 21 |
def load_students_data():
|
|
@@ -636,17 +643,17 @@ def query():
|
|
| 636 |
else:
|
| 637 |
result = client.query_scores(id_number)
|
| 638 |
|
| 639 |
-
# 如果返回成功且检测到
|
| 640 |
try:
|
| 641 |
-
# 查询学生姓名是否为
|
| 642 |
student_name = None
|
| 643 |
for s in STUDENTS_DATA:
|
| 644 |
if s.get('学号') == id_number:
|
| 645 |
student_name = s.get('学生姓名')
|
| 646 |
break
|
| 647 |
|
| 648 |
-
if student_name ==
|
| 649 |
-
print("✅ 检测到
|
| 650 |
trend = client.compute_rank_trend(result.get('data'))
|
| 651 |
# 取最新考试名称(列表已按倒序排列,取第一个)
|
| 652 |
latest_exam = result.get('data')[0].get('考试名称', '') if result.get('data') else ''
|
|
|
|
| 9 |
import socket
|
| 10 |
from xpinyin import Pinyin
|
| 11 |
|
| 12 |
+
try:
|
| 13 |
+
from dotenv import load_dotenv
|
| 14 |
+
load_dotenv()
|
| 15 |
+
except ImportError:
|
| 16 |
+
pass
|
| 17 |
+
|
| 18 |
app = Flask(__name__)
|
| 19 |
p = Pinyin()
|
| 20 |
|
| 21 |
STUDENTS_DATA = []
|
| 22 |
STUDENTS_FILE = "students.json"
|
| 23 |
+
DOT_NOTIFY_URL = os.environ.get("DOT_NOTIFY_URL", "https://dot.mindreset.tech/api/open/text")
|
| 24 |
+
DOT_AUTH_TOKEN = os.environ.get("DOT_AUTH_TOKEN", "")
|
| 25 |
+
TARGET_STUDENT_NAME = os.environ.get("TARGET_STUDENT_NAME", "")
|
| 26 |
DOT_ICON = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAEj0lEQVR4nO2YXYhVVRTHf/fOTI2Og2apo6IDpZNFZkUfplRYPURRCX0oigZWlPQgEUlRhhVBUA+h9ZAWRBJFX2IPfuLLJGlFYkb6YGWNIPYxpKmYOjO3h/Vfs/c9c+49Z65jQcyCyz37Y/33f6+99lrrHBiU/7kUBgijmILVo99/JgWgLmNOMceczEVqkSLBOk3AlcBUoBnoBg4AO4EfUuafdXGLDAeWA38ApQq/zcDNml9gYFwqF7kZwH6R+AZYAkwHLsIsOQf4ICK6guCnZ41kUf83AieBY8DcDJ2pwOcYyTUEvx1wkr77FuBX7Fgvi8bqtXCRcDHqNX4usFYkn1XfGV2cNHHANVpoltrnZOg5yWHAPuBv4EL1FVM1ahAHmiByn6rdkFPfSd4n/VcS/WcsDdjxPqoFbiJfDHTxizEE+B34WeTSgnsfqWTmAsGvukXsWqAL2C29Uk6CJeGcAr4AWoGRhLhYR5WLk0awTqBdIue7n4BdkD/VX0k/Da9HOt8JuxUL8CX1uxEy8XxCM/AgsAn4Ddt9CQstq7FQExOoRg6gEZgH7CLExi6gA3gfuCMPnpObj/lKSf/rgVWE3ftvI9BWBdT77gR+ifROCW81duTe/xUW7PvgxQ7/qibvAm6n/KbO0dgi4EU9H8EuTRLUn5/UvD3AvUAnsDexkRbgmYjowiSePyzXhJWJxer1GwWcwCwKcAtwGDhKCNp1ke5jwntP7XvUXqY5jZT73OWE9HlrkuR1GnhXbb/FhcTElwlWBPPFbqxyiUPHFM3bpHljMOsdAUYTakhfy0+qTZs+iBUjvTd7mwCaCOkqFgdsAr4Xqbs0tkxk5kYbWYf52jDgPIKvPZC0TCSelR7W3KU+cCnB9FA5wjvpydjtKwFPAedjuXm7xkcSMsbVWE1YAl6oQg6CERqAQ8CPPvdxAVxCuemrkWwF2qV3ELP+aeAG4Gn1/6T/k8AjGeRc3DirpHsxwDtYEh8a7aSaxL6zEKsHT2PBOI5xncAbWI0Y62UR9LTag0USPsaOKF44S5KLPSfAJ4CPRHhsNJ43b7sF52EbnV3EUtdw7ALklR5sI42U3/jXgS3RQl4XdqdgVJICFtIAjhWBrwXSRrYPxuJZwSucLj0f0PhV9P9FyV3kerX3AUwkvDdA/jrNw9E4Ed2s/gvU/qSfeG6cZuAvzLd73W0tdtvG9wPU49ab2AZvi8beUt+0GvCel+6CmHkbdkTthKjeQHrAjt837hfYBrW9rhuPWWEvMCKBF19Cx/M1ZxHeFD0z9d6whwjvsi0JYmnV7yJCvBtLOCLH89y7EwvuWXizsVPsRPGPyEAOuligR7FKZGICZChWJKwnVCmTkmAR3gKC47+E5eiYWCMwE/hQczqwyj2JVwY6A9gRAXcAX2L14PGo/zUsPKWCRXhXYKHH9Q5htd+3mBt4/9tYURHr9jGzv4OApa27taMxWLbZD2wFPsOKUCdXKZzEeNdgBcZ0rKLxbzjtWHGR+ztO3jiY9wtBrre3SnjVFF3Bc2y8WC3f/hzPj9TXrxVvUAblX5F/AN1tJCuIaUiQAAAAAElFTkSuQmCC"
|
| 27 |
|
| 28 |
def load_students_data():
|
|
|
|
| 643 |
else:
|
| 644 |
result = client.query_scores(id_number)
|
| 645 |
|
| 646 |
+
# 如果返回成功且检测到了目标学生,则计算趋势并发送通知
|
| 647 |
try:
|
| 648 |
+
# 查询学生姓名是否为目标学生:在 students.json 中查找
|
| 649 |
student_name = None
|
| 650 |
for s in STUDENTS_DATA:
|
| 651 |
if s.get('学号') == id_number:
|
| 652 |
student_name = s.get('学生姓名')
|
| 653 |
break
|
| 654 |
|
| 655 |
+
if TARGET_STUDENT_NAME and student_name == TARGET_STUDENT_NAME and result.get('success') and result.get('data'):
|
| 656 |
+
print(f"✅ 检测到目标学生 {TARGET_STUDENT_NAME},准备发送通知...")
|
| 657 |
trend = client.compute_rank_trend(result.get('data'))
|
| 658 |
# 取最新考试名称(列表已按倒序排列,取第一个)
|
| 659 |
latest_exam = result.get('data')[0].get('考试名称', '') if result.get('data') else ''
|