Hugging8N / keep_alive_server.py
AI Bot
Add gemini-web2api and dashboard server
c2b0f3c
Raw History Blame Contribute Delete
2.73 kB
# -*- coding: utf-8 -*-
import os
import json
import sys
import argparse
from http.server import HTTPServer, BaseHTTPRequestHandler
class DashboardHandler(BaseHTTPRequestHandler):
def log_message(self, fmt, *args):
pass
def do_GET(self):
path = self.path.split('?')[0]
if path == '/':
self.serve_dashboard()
elif path == '/api/logs':
self.serve_logs()
elif path == '/api/stats':
self.serve_stats()
else:
self.send_response(404)
self.end_headers()
def serve_dashboard(self):
try:
with open("dashboard.html", "r", encoding="utf-8") as f:
html = f.read()
self.send_response(200)
self.send_header("Content-type", "text/html; charset=utf-8")
self.send_header("Access-Control-Allow-Origin", "*")
self.end_headers()
self.wfile.write(html.encode('utf-8'))
except Exception as e:
self.send_response(500)
self.end_headers()
self.wfile.write(f"Error loading dashboard: {e}".encode('utf-8'))
def serve_logs(self):
self.send_response(200)
self.send_header("Content-type", "application/json; charset=utf-8")
self.send_header("Access-Control-Allow-Origin", "*")
self.end_headers()
log_content = ""
log_path = os.path.join("output", "bot.log")
if os.path.exists(log_path):
try:
with open(log_path, "r", encoding="utf-8") as f:
lines = f.readlines()
log_content = "".join(lines[-100:])
except Exception:
pass
if not log_content:
log_content = "No logs available."
response = {"logs": log_content}
self.wfile.write(json.dumps(response).encode('utf-8'))
def serve_stats(self):
self.send_response(200)
self.send_header("Content-type", "application/json; charset=utf-8")
self.send_header("Access-Control-Allow-Origin", "*")
self.end_headers()
response = {
"total_posts": 0,
"total_likes": 0,
"total_replies": 0,
"top_posts": []
}
self.wfile.write(json.dumps(response, ensure_ascii=False).encode('utf-8'))
def run_server(port):
server = HTTPServer(("0.0.0.0", port), DashboardHandler)
print(f"[Dashboard] Server running on port {port}")
server.serve_forever()
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Dashboard Server")
parser.add_argument("--port", type=int, default=8080)
args = parser.parse_args()
run_server(args.port)