Gradio_text / app.py
OsGo's picture
Upload app.py
936781a verified
Raw
History Blame Contribute Delete
1.7 kB
import re
import datetime
from pathlib import Path
import gradio as gr
import os
import sys
import inspect
from typing import Optional
def make_txt(title: str, content: str) -> str:
"""
Crea un archivo .txt con un título y contenido y devuelve la ruta al archivo.
Args:
title (str): Título del documento.
content (str): Contenido del documento.
Returns:
str: Ruta al archivo creado.
"""
if title is None:
title = ""
# Sanitizar el título para usarlo como nombre de archivo
safe = re.sub(r'[^A-Za-z0-9 _-]', '', title).strip()
safe = safe.replace(' ', '_')
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"{safe}_{timestamp}.txt" if safe else f"file_{timestamp}.txt"
outdir = Path(__file__).parent / "outputs"
outdir.mkdir(exist_ok=True)
filepath = outdir / filename
header = title if title else "(Sin título)"
underline = "=" * len(header)
with filepath.open("w", encoding="utf-8") as f:
f.write(header + "\n")
f.write(underline + "\n\n")
f.write(content if content else "")
return str(filepath)
demo = gr.Interface(
fn=make_txt,
inputs=[
gr.Textbox(label="Título", placeholder="Escribe el título aquí"),
gr.Textbox(label="Contenido", lines=10, placeholder="Escribe el contenido del .txt aquí"),
],
outputs=gr.File(label="Descargar .txt"),
title="Generador de .txt",
description="Genera un archivo .txt con un título y contenido."
)
if __name__ == "__main__":
demo.launch(mcp_server=True)