2024.05.28 – Cómo Crear un Programa de Recordatorios Personalizado en Python


Introducción

En este blog, explicaré cómo crear un programa de recordatorios personalizado en Python utilizando plyer para las notificaciones. Este programa te permitirá establecer recordatorios que se alternan y se guardan automáticamente, para que siempre estén disponibles, incluso después de cerrar y volver a abrir el programa.

Requisitos

  • Python instalado en tu computadora
  • Biblioteca plyer para las notificaciones
  • PyInstaller para crear un ejecutable del script

Paso 1: Instalar las Dependencias

Primero, necesitas instalar plyer y PyInstaller. Puedes hacerlo usando pip:

pip install plyer
pip install pyinstaller

Paso 2: Crear el Script de Python

A continuación, crea un script llamado recordatorio_foco.py con el siguiente contenido:

import json
import time
from plyer import notification
import os
import sys

def remind_to_focus(message):
    print(f"Intentando enviar notificación: {message}")
    try:
        notification.notify(
            title="Recordatorio",
            message=message,
            timeout=10
        )
        print(f"Notificación enviada: {message}")
    except Exception as e:
        print(f"Error al enviar la notificación: {e}")

def load_reminders(filename):
    try:
        with open(filename, 'r') as file:
            return json.load(file)
    except FileNotFoundError:
        return ["¡Vuelve al foco!", "Mantener la puerta del cuarto cerrada."]

def save_reminders(reminders, filename):
    with open(filename, 'w') as file:
        json.dump(reminders, file)

if __name__ == "__main__":
    # Obtener la ruta completa del archivo reminders.json en la misma carpeta que el ejecutable
    if getattr(sys, 'frozen', False):
        script_dir = os.path.dirname(sys.executable)
    else:
        script_dir = os.path.dirname(os.path.abspath(__file__))

    reminders_filename = os.path.join(script_dir, 'reminders.json')

    messages = load_reminders(reminders_filename)

    print("La lista de recordatorios actual es:")
    for i, message in enumerate(messages, 1):
        print(f"{i}. {message}")

    while True:
        add_message = input("¿Hay algún otro recordatorio adicional con el que quiera alternar? (sí/no): ").strip().lower()
        if add_message == 'sí' or add_message == 'si':
            new_message = input("Ingrese el nuevo recordatorio: ").strip()
            messages.append(new_message)
            print("La lista de recordatorios actualizada es:")
            for i, message in enumerate(messages, 1):
                print(f"{i}. {message}")
        else:
            print("Perfecto, la lista de recordatorios actualizada es:")
            for i, message in enumerate(messages, 1):
                print(f"{i}. {message}")
            break

    save_reminders(messages, reminders_filename)

    try:
        interval = int(input("Ingrese la frecuencia de recordatorio en segundos: "))
    except ValueError:
        print("Entrada no válida. Usando el intervalo predeterminado de 60 segundos.")
        interval = 60

    message_index = 0

    print(f"El recordatorio está funcionando... Frecuencia: {interval} segundos")
    while True:
        remind_to_focus(messages[message_index])
        message_index = (message_index + 1) % len(messages)
        time.sleep(interval)

Paso 3: Crear el Archivo reminders.json

Asegúrate de que el archivo reminders.json esté en la misma carpeta que recordatorio_foco.py. Puedes crear este archivo con el siguiente contenido inicial:

[
    "¡Vuelve al foco!",
    "Mantener la puerta del cuarto cerrada."
]

Paso 4: Crear el Archivo de Especificaciones para PyInstaller

Crea un archivo llamado recordatorio_foco.spec con el siguiente contenido:

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None

a = Analysis(
    ['recordatorio_foco.py'],
    pathex=['.'],
    binaries=[],
    datas=[('reminders.json', 'reminders.json')],
    hiddenimports=['plyer.platforms.win.notification', 'plyer.platforms.win.libs.balloontip', 'ctypes', 'ctypes.wintypes'],
    hookspath=[],
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,
    a.scripts,
    [],
    exclude_binaries=True,
    name='recordatorio_foco',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    console=True,
    disable_windowed_traceback=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None
)
coll = COLLECT(
    exe,
    a.binaries,
    a.zipfiles,
    a.datas,
    strip=False,
    upx=True,
    upx_exclude=[],
    name='recordatorio_foco'
)

Paso 5: Crear el Ejecutable

Navega a la carpeta que contiene recordatorio_foco.py y recordatorio_foco.spec, y ejecuta el siguiente comando:

pyinstaller recordatorio_foco.spec

Esto generará un ejecutable que podrás usar para correr el programa de recordatorios.

Conclusión

Siguiendo estos pasos, has creado un programa de recordatorios que guarda y carga automáticamente la lista de recordatorios desde un archivo. Este programa puede ser útil para mantenerte enfocado y recordar tareas importantes a lo largo del día.


Published by Leonardo Tomás Cardillo

https://www.linkedin.com/in/leonardocardillo

Leave a comment

Design a site like this with WordPress.com
Get started