from flask import Flask, request, jsonify, send_from_directory import os import psutil import time import datetime import json app = Flask(__name__) # Define the path to static files static_dir = os.path.join(os.path.dirname(os.path.abspath(__file__))) @app.route('/css/') def css(filename): return send_from_directory(os.path.join(static_dir, 'css'), filename) @app.route('/js/') def js(filename): return send_from_directory(os.path.join(static_dir, 'js'), filename) @app.route('/img/') def img(filename): return send_from_directory(os.path.join(static_dir, 'img'), filename) @app.route('/') def index(): return send_from_directory(static_dir, 'index.html') @app.route('/ai') def ai(): return send_from_directory(os.path.join(static_dir, 'views'), 'ai.html') @app.route('/ai/') def ai_file(filename): return send_from_directory(os.path.join(static_dir, 'ai'), filename) @app.route('/info') def info(): ip = request.remote_addr current_time = datetime.datetime.now().strftime("%H:%M:%S") return jsonify({'ip': ip, 'current_time': current_time}) # Define the visitor count routes visitor_count = 0 visitor_today = 0 last_update_date = datetime.datetime.now().date() visitor_total = 0 @app.before_request def update_visitor_counts(): global visitor_count, visitor_today, last_update_date, visitor_total allowed_paths = ['/ai', '/api', '/tool'] if request.path.startswith(tuple(allowed_paths)): current_date = datetime.datetime.now().date() if current_date != last_update_date: visitor_today = 0 last_update_date = current_date visitor_count += 1 visitor_today += 1 visitor_total += 1 if datetime.datetime.now().hour == 0 and datetime.datetime.now().minute == 0: reset_visitor_count() @app.route('/count') def count(): return jsonify({ 'visitor_count': visitor_count, 'visitor_today': visitor_today, 'visitor_total': visitor_total }) @app.route('/reset') def reset_visitor_count(): global visitor_count, visitor_today, last_update_date visitor_count = 0 visitor_today = 0 last_update_date = datetime.datetime.now().date() return jsonify({'visitor_count': visitor_count, 'visitor_today': visitor_today}) # Define the status route @app.route('/status') def status(): uptime_seconds = int(time.time() - psutil.boot_time()) uptime = str(datetime.timedelta(seconds=uptime_seconds)) memory_free = psutil.virtual_memory().available memory_total = psutil.virtual_memory().total return jsonify({'runtime': uptime, 'memory': f'{memory_free} / {memory_total}'}) # Handle 404 errors @app.errorhandler(404) def page_not_found(e): return send_from_directory(static_dir, '404.html'), 404 if __name__ == "__main__": app.run(host="0.0.0.0", port=7860, debug=True)