From 290c1badb4d80ea599288f46b8e90bd0b96a45a7 Mon Sep 17 00:00:00 2001 From: Karl Hudgell Date: Sun, 30 Mar 2025 09:11:06 +0100 Subject: [PATCH] support auto image regeneration at specific time --- ai_frame_image_server.py | 52 ++++++++++++++++++++++++++++++--------- requirements.txt | Bin 112 -> 138 bytes user_config.cfg.sample | 2 ++ 3 files changed, 43 insertions(+), 11 deletions(-) diff --git a/ai_frame_image_server.py b/ai_frame_image_server.py index a2a83df..25c1fcc 100644 --- a/ai_frame_image_server.py +++ b/ai_frame_image_server.py @@ -1,33 +1,63 @@ -from flask import Flask, render_template, send_from_directory, redirect, url_for, request, jsonify +from flask import ( + Flask, + render_template, + send_from_directory, + redirect, + url_for, + request, + jsonify, +) import os +import time +from apscheduler.schedulers.background import BackgroundScheduler from lib import create_image, load_config user_config = load_config() - app = Flask(__name__) image_folder = "./output" -@app.route('/') -def index(): - return render_template("index.html", image="./image.png", reload_interval=user_config["frame"]["reload_interval"]) -@app.route('/images/') +@app.route("/") +def index(): + return render_template( + "index.html", + image="./image.png", + reload_interval=user_config["frame"]["reload_interval"], + ) + + +@app.route("/images/") def images(filename): return send_from_directory(image_folder, filename) -@app.route('/create', methods=["GET", "POST"]) + +@app.route("/create", methods=["GET", "POST"]) def create(): """Endpoint to create a new image. Supports optional prompt via POST.""" prompt = request.form.get("prompt") if request.method == "POST" else None create_image(prompt) # Pass prompt to create_image() - + if request.method == "POST": return jsonify({"message": "Image created", "prompt": prompt}), 200 return redirect(url_for("index")) -if __name__ == '__main__': - os.makedirs(image_folder, exist_ok=True) # Ensure the folder exists - app.run(host="0.0.0.0", port=user_config["frame"]["port"], debug=True) +def scheduled_task(): + print(f"Executing scheduled task at {time.strftime('%Y-%m-%d %H:%M:%S')}") + create_image(None) + +if user_config["frame"]["auto_regen"] == "True": + scheduler = BackgroundScheduler() + + regen_time = user_config["frame"]["regen_time"].split(":") + scheduler.add_job(scheduled_task, "cron", hour=regen_time[0], minute=regen_time[1]) + scheduler.start() + +if __name__ == "__main__": + os.makedirs(image_folder, exist_ok=True) # Ensure the folder exists + try: + app.run(host="0.0.0.0", port=user_config["frame"]["port"], debug=True) + except KeyboardInterrupt: + scheduler.shutdown() # Ensure graceful shutdown of scheduler diff --git a/requirements.txt b/requirements.txt index 3031937bc7428901d98e18ae314c506573f65ac5..0b0605fb863d32ebf74e9a76278583d3c91fe7d9 100644 GIT binary patch delta 32 lcmXTuVw_MQ#mm6OkjPNLP|T3bkin43kit;PkOQQP7yx$M2E70P delta 5 McmeBTESOLL00o-?`~Uy| diff --git a/user_config.cfg.sample b/user_config.cfg.sample index 2827152..997e5d5 100644 --- a/user_config.cfg.sample +++ b/user_config.cfg.sample @@ -1,5 +1,7 @@ [frame] reload_interval = 30000 +auto_regen = True +regen_time = 03:00 port = 5000 [comfyui]