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
plyerpara 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.