diff --git a/AI/A1_Flask.py b/AI/A1_Flask.py index 5333ae00..82644efe 100644 --- a/AI/A1_Flask.py +++ b/AI/A1_Flask.py @@ -121,4 +121,8 @@ def check_task(guid): if __name__ == '__main__': - app.run(host='0.0.0.0', port=6000, threaded=True) \ No newline at end of file + app.run(host='0.0.0.0', port=6000, threaded=True) + +''' +curl -X POST http://10.10.21.20:6000/submit -H "Content-Type: application/json" -d '{"course_name": "小学数学三角形内角和"}' +''' diff --git a/AI/A1_GenerateMarkdown.py b/AI/A1_GenerateMarkdown.py index 8d472652..de853e80 100644 --- a/AI/A1_GenerateMarkdown.py +++ b/AI/A1_GenerateMarkdown.py @@ -61,7 +61,7 @@ class MarkdownGenerator: {"role": "user", "content": f"请生成《{self.course_name}》教学大纲"} ], stream=True, - timeout=30 # 设置超时时间 + timeout=100 # 设置超时时间 ) def run(self) -> bool: diff --git a/AI/AiService/TestStream.py b/AI/AiService/TestStream.py new file mode 100644 index 00000000..6567ad17 --- /dev/null +++ b/AI/AiService/TestStream.py @@ -0,0 +1,65 @@ +from fastapi import FastAPI +from fastapi.responses import StreamingResponse, PlainTextResponse +import time +import socket + +app = FastAPI() + +# 获取本机所有 IPv4 地址 +def get_local_ips(): + ips = [] + hostname = socket.gethostname() + try: + # 获取所有 IP 地址 + addrs = socket.getaddrinfo(hostname, None, family=socket.AF_INET) # 只获取 IPv4 地址 + for addr in addrs: + ip = addr[4][0] + if ip not in ips: + ips.append(ip) + except Exception as e: + print(f"获取 IP 地址失败: {e}") + return ips + +# 模拟逐字生成数据的函数(SSE 格式) +def generate_data(text): + for char in text: + time.sleep(0.1) # 模拟延迟 + yield f" {char}".encode("utf-8") # 按照 SSE 格式返回数据 + +# 根路由,返回提示信息 +@app.get("/") +def root(): + return PlainTextResponse("Hello ApiStream") + +# 流式返回数据(SSE) +@app.get("/stream") +def stream_data(): + text = "你好,这是一个流式返回数据的示例。这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例这是一个流式返回数据的示例" + return StreamingResponse( + generate_data(text), + media_type="text/event-stream", # 使用 text/event-stream + headers={ + "Cache-Control": "no-cache", # 禁用缓存 + "Connection": "keep-alive", # 保持连接 + "Access-Control-Allow-Origin": "*", # 允许跨域 + "X-Accel-Buffering": "no" # 禁用 Nginx 缓冲(如果有代理) + } + ) + +# 运行应用 +if __name__ == "__main__": + import uvicorn + + # 获取本机所有 IPv4 地址 + ips = get_local_ips() + if not ips: + print("无法获取本机 IP 地址,使用默认地址 127.0.0.1") + ips = ["127.0.0.1"] + + # 打印所有 IP 地址 + print("服务将在以下 IP 地址上运行:") + for ip in ips: + print(f"http://{ip}:8000") + + # 启动 FastAPI 应用,绑定到所有 IP 地址 + uvicorn.run(app, host="0.0.0.0", port=8000) \ No newline at end of file diff --git a/AI/Ylt/Config.py b/AI/Ylt/Config.py index 85bef09c..ab7cd14d 100644 --- a/AI/Ylt/Config.py +++ b/AI/Ylt/Config.py @@ -1,5 +1,5 @@ # 隐藏浏览器 -# HEADLESS = True +#HEADLESS = True HEADLESS = False # 素材的固定文件夹名称 MATERIAL_FOLDER_NAME = '播报充电情况' diff --git a/AI/Ylt/PaiCheng.py b/AI/Ylt/PaiCheng.py index b745aa88..73e2df5a 100644 --- a/AI/Ylt/PaiCheng.py +++ b/AI/Ylt/PaiCheng.py @@ -145,9 +145,6 @@ def run(playwright: Playwright) -> None: # 登录 login(page) - # 切换到节目 - changeJieMu(page) - # 排程 paiCheng(page, PREFIX_NAME, '12', '00', '00', '13', '00', '00') diff --git a/AI/Ylt/__pycache__/Config.cpython-310.pyc b/AI/Ylt/__pycache__/Config.cpython-310.pyc index a5181a53..e4ba8b6b 100644 Binary files a/AI/Ylt/__pycache__/Config.cpython-310.pyc and b/AI/Ylt/__pycache__/Config.cpython-310.pyc differ diff --git a/AI/Ylt/__pycache__/PaiCheng.cpython-310.pyc b/AI/Ylt/__pycache__/PaiCheng.cpython-310.pyc new file mode 100644 index 00000000..023e0542 Binary files /dev/null and b/AI/Ylt/__pycache__/PaiCheng.cpython-310.pyc differ diff --git a/AI/Ylt/__pycache__/Upload.cpython-310.pyc b/AI/Ylt/__pycache__/Upload.cpython-310.pyc new file mode 100644 index 00000000..e43c2393 Binary files /dev/null and b/AI/Ylt/__pycache__/Upload.cpython-310.pyc differ diff --git a/AI/md-file/readme/9e982564-6cfd-47ab-8c65-ecc433280162.md b/AI/md-file/readme/9e982564-6cfd-47ab-8c65-ecc433280162.md new file mode 100644 index 00000000..4e7ecb9d --- /dev/null +++ b/AI/md-file/readme/9e982564-6cfd-47ab-8c65-ecc433280162.md @@ -0,0 +1,140 @@ +--- +Title: 《哈哈哈》教学大纲 +Author: 东师理想 + +Date: 2025.02.14 +--- + +# 课程介绍 + +## 课程目标 + +> 本课程旨在帮助学生掌握《哈哈哈》的核心概念和实际应用 + +- 理解《哈哈哈》的基本原理 +- 掌握《哈哈哈》的实际应用技巧 +- 能够在实际项目中应用《哈哈哈》 + +## 课程内容 + +> 本课程将涵盖《哈哈哈》的多个方面,从基础到高级应用 + +- 《哈哈哈》的基础知识 +- 《哈哈哈》的核心概念 +- 《哈哈哈》的实际应用案例 +- 《哈哈哈》的未来发展趋势 + +# 课程安排 + +## 第一周:基础知识 + +> 第一周将介绍《哈哈哈》的基础知识 + +- 什么是《哈哈哈》 +- 《哈哈哈》的历史发展 +- 《哈哈哈》的基本原理 + +## 第二周:核心概念 + +> 第二周将深入探讨《哈哈哈》的核心概念 + +- 《哈哈哈》的核心理论 +- 《哈哈哈》的关键技术 +- 《哈哈哈》的实践方法 + +## 第三周:实际应用 + +> 第三周将通过案例学习《哈哈哈》的实际应用 + +- 《哈哈哈》在项目中的应用 +- 《哈哈哈》的案例分析 +- 《哈哈哈》的优化策略 + +## 第四周:未来趋势 + +> 第四周将展望《哈哈哈》的未来发展趋势 + +- 《哈哈哈》的未来发展方向 +- 《哈哈哈》的技术创新 +- 《哈哈哈》的应用前景 + +# 课程资源 + +## 参考书籍 + +> 以下是本课程的参考书籍 + +- 《哈哈哈基础教程》 +- 《哈哈哈高级应用》 +- 《哈哈哈案例分析》 + +## 在线资源 + +> 以下是本课程的在线资源 + +- 《哈哈哈》官方文档 +- 《哈哈哈》在线课程 +- 《哈哈哈》社区论坛 + +# 考核方式 + +## 作业 + +> 每节课后都会有相应的作业 + +- 每周完成一次作业 +- 作业内容包括理论题和实践题 + +## 项目 + +> 课程结束时需要完成一个项目 + +- 项目主题自选 +- 项目需应用《哈哈哈》的知识 +- 项目需提交报告和演示文稿 + +## 考试 + +> 课程结束时会有一次期末考试 + +- 考试内容包括理论和实践 +- 考试形式为笔试和上机操作 + +# 联系方式 + +## 教师信息 + +> 以下是本课程的教师信息 + +- 教师姓名:张三 +- 邮箱:zhangsan@example.com +- 办公室:东师理想大楼201 + +## 助教信息 + +> 以下是本课程的助教信息 + +- 助教姓名:李四 +- 邮箱:lisi@example.com +- 办公室:东师理想大楼202 + +# 课程反馈 + +## 反馈渠道 + +> 学生可以通过以下渠道提供课程反馈 + +- 课程论坛 +- 教师邮箱 +- 课程问卷调查 + +## 反馈时间 + +> 课程反馈将在每节课后进行收集 + +- 每节课后提供反馈 +- 课程结束时进行总结反馈 + +--- + +以上是《哈哈哈》教学大纲的详细内容,学生可以根据大纲安排学习计划,并积极参与课程的各项活动。 \ No newline at end of file