1. Implementazione di un meccanismo di promemoria
Uso del modulo datetime e timedelta
A volte, per creare un promemoria, devi calcolare quanto tempo rimane fino all'evento. Qui ci aiuta timedelta:
from datetime import datetime, timedelta
# Calcolo del tempo di promemoria
meeting_time = datetime(2023, 10, 30, 15, 0, 0)
reminder_time = meeting_time - timedelta(minutes=30)
print(f"Dovrai inviare un promemoria alle: {reminder_time}")
Semplice notifica tramite console
Il primo passo è con semplici notifiche. Certo, non sono così "belle" come le push-notifications su smartphone, ma per iniziare vanno bene.
import time
def simple_reminder(message, delay):
print(f"Tra {delay} secondi riceverai un promemoria...")
time.sleep(delay)
print(f"Promemoria: {message}")
simple_reminder("È ora della riunione!", 10)
2. Uso di schedule per promemoria periodici
Quando ti serve un promemoria ripetuto, schedule diventa il tuo alleato. Puoi impostare vari intervalli, come giornalieri o settimanali:
import schedule
import time
def meeting_reminder():
print("Promemoria: hai una riunione a breve!")
# Promemoria tutti i giorni alle 14:30
schedule.every().day.at("14:30").do(meeting_reminder)
while True:
schedule.run_pending()
time.sleep(1)
3. Notifiche basate sul tempo con la libreria plyer
Per rendere le notifiche più "vere", possiamo usare la libreria plyer per inviare notifiche di sistema:
from plyer import notification
import time
def plyer_notification(title, message):
notification.notify(
title=title,
message=message,
app_name='Python Reminder',
timeout=10
)
# Esempio di utilizzo
plyer_notification("Promemoria!", "È ora della riunione.")
La funzione notification.notify() mostrerà una notifica standard del sistema operativo.
4. Promemoria con invio di email
Per inviare notifiche via email in Python si utilizza il modulo smtplib. Nell'esempio successivo, configureremo l'invio di un promemoria via email usando un server SMTP.
import smtplib
from email.mime.text import MIMEText
import schedule
import time
def send_email_reminder():
sender = "your_email@example.com"
receiver = "receiver_email@example.com"
subject = "Promemoria del compito"
body = "Questo è un promemoria automatico: non dimenticare di completare il tuo compito oggi."
# Creazione del messaggio
msg = MIMEText(body)
msg["Subject"] = subject
msg["From"] = sender
msg["To"] = receiver
# Connessione al server SMTP e invio email
with smtplib.SMTP("smtp.example.com", 587) as server:
server.starttls()
server.login(sender, "your_password")
server.sendmail(sender, receiver, msg.as_string())
print("Promemoria inviato via email.")
# Pianificazione del promemoria ogni giorno alle 8:30
schedule.every().day.at("08:30").do(send_email_reminder)
while True:
schedule.run_pending()
time.sleep(1)
La funzione send_email_reminder() invia un promemoria via email. Configura l'indirizzo del mittente, del destinatario e il server SMTP. Questo metodo rende facile automatizzare l'invio di notifiche via email.
5. Promemoria tramite Telegram
Per inviare promemoria tramite Telegram, puoi usare il suo API. In questo esempio, inviamo una notifica in una chat di Telegram utilizzando requests.
Setup:
- Crea un bot in Telegram tramite BotFather e ottieni il
API_TOKEN. - Trova il tuo
CHAT_IDinviando un messaggio al bot e ottenendo l'ID della chat tramite l'API.
import requests
import schedule
import time
def send_telegram_reminder():
api_token = "YOUR_API_TOKEN"
chat_id = "YOUR_CHAT_ID"
message = "Promemoria: oggi hai una compito importante!"
url = f"https://api.telegram.org/bot{api_token}/sendMessage"
payload = {
"chat_id": chat_id,
"text": message
}
response = requests.post(url, data=payload)
if response.status_code == 200:
print("Promemoria inviato tramite Telegram.")
else:
print("Errore nell'invio del promemoria su Telegram.")
# Pianificazione del promemoria ogni giorno alle 9:00
schedule.every().day.at("09:00").do(send_telegram_reminder)
while True:
schedule.run_pending()
time.sleep(1)
Ora, ogni giorno alle 9:00, il bot invierà una notifica nella chat di Telegram indicata.
6. Altri consigli per configurare le notifiche
- Gestione errori: Aggiungi la gestione degli errori per l'invio delle notifiche, ad esempio, controlla la connessione al server email o Telegram.
- Logging: Usa la libreria
loggingper registrare gli eventi di promemoria. Questo aiuterà a tracciare quando i promemoria sono stati effettivamente inviati. - Flessibilità delle impostazioni: Se prevedi di usare i promemoria in un progetto, crea una funzione per impostare dinamicamente l'ora e i modi di notifica per poter cambiare le impostazioni facilmente.
GO TO FULL VERSION