Spaces:
Running
Running
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__))) | |
def css(filename): | |
return send_from_directory(os.path.join(static_dir, 'css'), filename) | |
def js(filename): | |
return send_from_directory(os.path.join(static_dir, 'js'), filename) | |
def img(filename): | |
return send_from_directory(os.path.join(static_dir, 'img'), filename) | |
def index(): | |
return send_from_directory(static_dir, 'index.html') | |
def ai(): | |
return send_from_directory(os.path.join(static_dir, 'views'), 'ai.html') | |
def ai_file(filename): | |
return send_from_directory(os.path.join(static_dir, 'ai'), filename) | |
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 | |
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() | |
def count(): | |
return jsonify({ | |
'visitor_count': visitor_count, | |
'visitor_today': visitor_today, | |
'visitor_total': visitor_total | |
}) | |
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 | |
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 | |
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) |