This commit is contained in:
mzl
2026-01-12 15:21:52 +08:00
parent e64adfe628
commit 7c933f4a82
4 changed files with 286 additions and 36 deletions
+43 -6
View File
@@ -74,6 +74,8 @@ async def index(request: Request):
return templates.TemplateResponse("index.html", {"request": request})
@app.get("/api/status", response_model=StatusResponse)
async def get_status():
"""获取当前状态"""
@@ -395,6 +397,7 @@ async def export_users_to_txt():
class LoginStatusResponse(BaseModel):
logged_in: bool
login_time: Optional[str] = None
expire_time: Optional[str] = None
@app.get("/api/login/status", response_model=LoginStatusResponse)
@@ -409,9 +412,20 @@ async def get_login_status():
with open(auth_file, 'r', encoding='utf-8') as f:
auth_data = json.load(f)
# 检查是否过期
login_time = auth_data.get("login_time")
expire_time = auth_data.get("expire_time")
current_time = datetime.now().isoformat()
if expire_time and current_time > expire_time:
# 登录已过期,清除状态
os.remove(auth_file)
return LoginStatusResponse(logged_in=False)
return LoginStatusResponse(
logged_in=auth_data.get("logged_in", False),
login_time=auth_data.get("login_time")
login_time=login_time,
expire_time=expire_time
)
except Exception:
return LoginStatusResponse(logged_in=False)
@@ -419,12 +433,35 @@ async def get_login_status():
@app.post("/api/login/qrcode")
async def generate_qrcode():
"""生成登录二维码"""
# 这里应该调用实际的小红书登录API
# 暂时返回模拟数据
"""模拟登录成功"""
import uuid
from datetime import datetime, timedelta
# 生成登录状态(模拟登录成功)
login_id = str(uuid.uuid4())
current_time = datetime.now()
expire_time = current_time + timedelta(hours=24) # 24小时后过期
# 保存登录状态到文件
auth_file = os.path.join(config.DATA_DIR, "auth_state.json")
auth_data = {
"logged_in": True,
"login_time": current_time.isoformat(),
"expire_time": expire_time.isoformat(),
"login_id": login_id,
"platform": "xiaohongshu"
}
with open(auth_file, 'w', encoding='utf-8') as f:
json.dump(auth_data, f, ensure_ascii=False, indent=2)
# 返回登录信息
return {
"qr_url": "https://example.com/login/qrcode",
"qr_id": "123456"
"login_id": login_id,
"login_time": current_time.isoformat(),
"expire_time": expire_time.isoformat(),
"message": "登录成功(模拟)",
"expire_in_hours": 24
}