import gradio as gr import csv import os from datetime import datetime import pandas as pd from sklearn.linear_model import LinearRegression import time active_count = 0 model = None def log_data(count): file_exists = os.path.isfile("usage.csv") with open("usage.csv", "a", newline="") as f: writer = csv.writer(f) if not file_exists: writer.writerow(["time", "active_users"]) writer.writerow([datetime.now(), count]) def train_model(): global model if not os.path.exists("usage.csv"): return None data = pd.read_csv("usage.csv") if len(data) < 2: return None data['time'] = pd.to_datetime(data['time']) data['time'] = data['time'].astype(int) // 10**9 X = data[['time']] y = data['active_users'] model = LinearRegression() model.fit(X, y) def predict(input_text): global active_count, model # increase count active_count += 1 # log data log_data(active_count) # train model train_model() # prediction if model: current_time = int(time.time()) pred = model.predict([[current_time]])[0] return f"Estimated Active Users: {int(pred)}" else: return f"Current Active Users (approx): {active_count}" iface = gr.Interface( fn=predict, inputs="text", outputs="text", title="Active Users Predictor" ) iface.launch(share = True)