# -*- 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)