from flask import Flask
from markupsafe import escape
import os
import re

app = Flask(__name__)

LOG_FILE = "/data/script/anime-log/log.txt"

@app.route("/")
def show_log():
    last_line = ""
    last_episode_line = ""

    # Leggi tutto il log
    if os.path.exists(LOG_FILE):
        with open(LOG_FILE, "r", encoding="utf-8") as f:
            lines = [line.strip() for line in f if line.strip()]
            if lines:
                last_line = lines[-1]

                # cerca l'ultima riga con almeno 1 episodio scaricato
                for line in reversed(lines):
                    m = re.match(r"(\d{2}/\d{2}) - iniziato alle (\d{2}:\d{2}), finito alle (\d{2}:\d{2})\s+Episodi scaricati: (\d+)", line)
                    if m:
                        date, start, end, downloaded = m.groups()
                        if int(downloaded) > 0:
                            last_episode_line = f"{date} alle {end}"
                            break

    # parsifica l'ultima riga (esecuzione corrente)
    match = re.match(r"(\d{2}/\d{2}) - iniziato alle (\d{2}:\d{2}), finito alle (\d{2}:\d{2})\s+Episodi scaricati: (\d+)", last_line)
    html_output = "<div class='log-output'>Nessun log disponibile</div>"

    if match:
        date, start, end, downloaded = match.groups()
        downloaded = int(downloaded)

        main_line = f"{escape(date)} - iniziato alle {escape(start)}, finito alle {escape(end)}"

        if downloaded > 0:
            second_line = f"Ultimo episodio scaricato: {escape(date)} alle {escape(end)}"
            html_output = f"""
                <div class='log-output'>
                    <div class='main-line'>{main_line} - Episodi scaricati: {downloaded}</div>
                    <div class='second-line'>{second_line}</div>
                </div>
            """
        else:
            if last_episode_line:
                second_line = f"Ultimo episodio scaricato: {escape(last_episode_line)}"
                html_output = f"""
                    <div class='log-output'>
                        <div class='main-line'>{main_line} - Episodi scaricati: 0</div>
                        <div class='second-line'>{second_line}</div>
                    </div>
                """
            else:
                html_output = f"""
                    <div class='log-output'>
                        <div class='main-line'>{main_line} — Episodi scaricati: 0</div>
                    </div>
                """

    return f"""
    <html>
    <head>
        <meta charset="utf-8">
        <style>
            body {{
                background: transparent;
                color: white;
                font-family: Manrope, Arial, sans-serif;
                text-align: center;
                margin: 10;
                font-size: 12px;
            }}
            .log-output {{
            }}
            .main-line {{
            }}
            .second-line {{
                margin-top: 5px;
            }}
        </style>
    </head>
    <body>
        {html_output}
    </body>
    </html>
    """

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)
