from flask import Flask, request, redirect, render_template_string
from datetime import datetime
from pathlib import Path
import uuid
app = Flask(__name__)
DATA_FILE = Path("messages.txt")
PAGE = """
Phone Message Board
{% if not messages %}
No messages yet.
{% endif %}
{% for msg in messages %}
{% endfor %}
"""
def load_messages():
if not DATA_FILE.exists():
return []
raw = DATA_FILE.read_text(encoding="utf-8")
blocks = raw.split("\n---MESSAGE---\n")
messages = []
for block in blocks:
if not block.strip():
continue
try:
time, text = block.split("\n", 1)
except ValueError:
continue
messages.append({
"id": "msg_" + uuid.uuid4().hex,
"time": time.strip(),
"text": text.strip(),
})
return list(reversed(messages))
@app.route("/", methods=["GET", "POST"])
def index():
if request.method == "POST":
message = request.form.get("message", "").strip()
if message:
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
with DATA_FILE.open("a", encoding="utf-8") as f:
f.write(f"{timestamp}\n{message}\n---MESSAGE---\n")
return redirect("/")
return render_template_string(PAGE, messages=load_messages())
@app.route("/clear")
def clear():
DATA_FILE.write_text("", encoding="utf-8")
return redirect("/")
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8080)