CodeGym /Corsi /Python SELF IT /Creare promemoria e notifiche basate sul tempo

Creare promemoria e notifiche basate sul tempo

Python SELF IT
Livello 40 , Lezione 3
Disponibile

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:

Python

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.

Python

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:

Python

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:

Python

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.

Python

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:

  1. Crea un bot in Telegram tramite BotFather e ottieni il API_TOKEN.
  2. Trova il tuo CHAT_ID inviando un messaggio al bot e ottenendo l'ID della chat tramite l'API.
Python

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

  1. Gestione errori: Aggiungi la gestione degli errori per l'invio delle notifiche, ad esempio, controlla la connessione al server email o Telegram.
  2. Logging: Usa la libreria logging per registrare gli eventi di promemoria. Questo aiuterà a tracciare quando i promemoria sono stati effettivamente inviati.
  3. 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.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION