| 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 |
| |
| |
| active_count += 1 |
| |
| |
| log_data(active_count) |
| |
| |
| train_model() |
| |
| |
| 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) |