20250904-初步功能已完成
This commit is contained in:
@@ -2,6 +2,7 @@ import json
|
||||
import os
|
||||
import socket
|
||||
import threading
|
||||
from pathlib import Path
|
||||
from queue import Queue
|
||||
from typing import Any, Dict
|
||||
|
||||
@@ -16,15 +17,18 @@ from Entity.ResultData import ResultData
|
||||
from Utils.ControlUtils import ControlUtils
|
||||
from Utils.ThreadManager import ThreadManager
|
||||
from script.ScriptManager import ScriptManager
|
||||
from Entity.Variables import anchorList, addModelToAnchorList, prologueList, removeModelFromAnchorList
|
||||
from Entity.Variables import anchorList, prologueList, addModelToAnchorList, removeModelFromAnchorList
|
||||
import Entity.Variables as ev
|
||||
|
||||
app = Flask(__name__)
|
||||
CORS(app)
|
||||
|
||||
|
||||
|
||||
|
||||
listData = []
|
||||
dataQueue = Queue()
|
||||
|
||||
|
||||
def start_socket_listener():
|
||||
port = int(os.getenv('FLASK_COMM_PORT', 0))
|
||||
LogManager.info(f"Received port from environment: {port}")
|
||||
@@ -231,49 +235,61 @@ def stopScript():
|
||||
return ResultData(code=code, data="", msg=msg).toJson()
|
||||
|
||||
|
||||
# 传递主播数据(关注主播打招呼)
|
||||
|
||||
|
||||
|
||||
# 关注打招呼
|
||||
@app.route('/passAnchorData', methods=['POST'])
|
||||
def passAnchorData():
|
||||
data: Dict[str, Any] = request.get_json()
|
||||
# 设备列表
|
||||
try:
|
||||
data: Dict[str, Any] = request.get_json()
|
||||
# 设备列表
|
||||
idList = data.get("deviceList", [])
|
||||
# 主播列表
|
||||
acList = data.get("anchorList", [])
|
||||
AiUtils.save_aclist_flat_append(acList)
|
||||
|
||||
print("接收的数据", data)
|
||||
# 是否需要回复
|
||||
needReply = data.get("needReply", True)
|
||||
# 获取打招呼数据
|
||||
ev.prologueList = data.get("prologueList", [])
|
||||
|
||||
idList = data.get("deviceList", [])
|
||||
# 主播列表
|
||||
acList = data.get("anchorList", [])
|
||||
# 是否需要回复
|
||||
needReply = data.get("needReply", True)
|
||||
|
||||
# 获取打招呼数据
|
||||
ev.prologueList = data.get("prologueList", [])
|
||||
|
||||
|
||||
# 添加主播数据
|
||||
addModelToAnchorList(acList)
|
||||
# 启动线程,执行脚本
|
||||
for udid in idList:
|
||||
manager = ScriptManager()
|
||||
event = threading.Event()
|
||||
# 启动脚本
|
||||
thread = threading.Thread(target=manager.safe_greetNewFollowers, args=(udid, needReply, event))
|
||||
thread.start()
|
||||
# 添加到线程管理
|
||||
ThreadManager.add(udid, thread, event)
|
||||
return ResultData(data="").toJson()
|
||||
# 添加主播数据
|
||||
addModelToAnchorList(acList)
|
||||
# 启动线程,执行脚本
|
||||
for udid in idList:
|
||||
manager = ScriptManager()
|
||||
event = threading.Event()
|
||||
# 启动脚本
|
||||
thread = threading.Thread(target=manager.safe_greetNewFollowers, args=(udid, needReply, event))
|
||||
thread.start()
|
||||
# 添加到线程管理
|
||||
ThreadManager.add(udid, thread, event)
|
||||
return ResultData(data="").toJson()
|
||||
except Exception as e:
|
||||
LogManager.error(e)
|
||||
|
||||
# 获取私信数据
|
||||
@app.route("/getPrologueList", methods=['GET'])
|
||||
def getPrologueList():
|
||||
print(ev.prologueList)
|
||||
return ResultData(data=ev.prologueList).toJson()
|
||||
import Entity.Variables as Variables
|
||||
return ResultData(data=Variables.prologueList).toJson()
|
||||
|
||||
# 添加临时数据
|
||||
# 批量追加主播到 JSON 文件
|
||||
@app.route("/addTempAnchorData", methods=['POST'])
|
||||
def addTempAnchorData():
|
||||
"""
|
||||
请求体支持:
|
||||
- 单个对象:{"anchorId": "xxx", "country": "CN"}
|
||||
- 对象数组:[{"anchorId": "xxx", "country": "CN"}, {"anchorId": "yyy", "country": "US"}]
|
||||
"""
|
||||
data = request.get_json()
|
||||
addModelToAnchorList(data)
|
||||
return ResultData(data="").toJson()
|
||||
if not data:
|
||||
return ResultData(code=400, msg="请求数据为空").toJson()
|
||||
# 追加到 JSON 文件
|
||||
AiUtils.save_aclist_flat_append(data, "log/acList.json")
|
||||
return ResultData(data="ok").toJson()
|
||||
|
||||
|
||||
# 获取当前屏幕上的聊天信息
|
||||
@@ -333,20 +349,27 @@ def upLoadLogLogs():
|
||||
# 获取当前的主播列表数据
|
||||
@app.route("/anchorList", methods=['POST'])
|
||||
def queryAnchorList():
|
||||
file_path = "log/acList.json"
|
||||
data = []
|
||||
for model in anchorList:
|
||||
data.append(AnchorModel.modelToDict(model))
|
||||
if Path(file_path).exists():
|
||||
try:
|
||||
with open(file_path, "r", encoding="utf-8") as f:
|
||||
data = json.load(f)
|
||||
except Exception as e:
|
||||
LogManager.error(f"[anchorList] 读取失败: {e}")
|
||||
data = []
|
||||
return ResultData(data=data).toJson()
|
||||
|
||||
|
||||
# 删除主播
|
||||
@app.route("/deleteAnchorWithIds", methods=['POST'])
|
||||
def deleteAnchorWithIds():
|
||||
ls: list[dict] = request.get_json()
|
||||
for dic in ls:
|
||||
for model in anchorList:
|
||||
if dic.get("anchorId") == model.anchorId:
|
||||
removeModelFromAnchorList(model)
|
||||
return ResultData(data="").toJson()
|
||||
ls: list[dict] = request.get_json() # [{"anchorId": "xxx"}, ...]
|
||||
ids = [d.get("anchorId") for d in ls if d.get("anchorId")]
|
||||
deleted = AiUtils.delete_anchors_by_ids(ids)
|
||||
return ResultData(data={"deleted": deleted}).toJson()
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run("0.0.0.0", port=5000, debug=True, use_reloader=False)
|
||||
|
||||
Reference in New Issue
Block a user