CodeGym /Cours Java /Python SELF FR /Créer des rappels et notifications basés sur le temps

Créer des rappels et notifications basés sur le temps

Python SELF FR
Niveau 40 , Leçon 3
Disponible

1. Mise en œuvre des mécanismes de rappel

Utilisation du module datetime et timedelta

Parfois, pour créer un rappel, tu dois calculer combien de temps il reste avant un événement. C'est là que timedelta entre en jeu :

Python

from datetime import datetime, timedelta

# Calcul du temps de rappel
meeting_time = datetime(2023, 10, 30, 15, 0, 0)
reminder_time = meeting_time - timedelta(minutes=30)

print(f"Tu devras envoyer un rappel à : {reminder_time}")

Une simple notification via la console

La première étape, c'est d'utiliser de simples notifications. Bien sûr, elles ne sont pas aussi "stylées" que les notifications push sur ton smartphone, mais pour commencer, ça suffira.

Python

import time

def simple_reminder(message, delay):
    print(f"Dans {delay} secondes, un rappel s'affichera...")
    time.sleep(delay)
    print(f"Rappel : {message}")

simple_reminder("Il est temps pour la réunion !", 10)

2. Utiliser schedule pour des rappels périodiques

Quand tu as besoin que le rappel se répète, schedule devient ton allié. Tu peux définir différents intervalles, comme quotidien ou hebdomadaire :

Python

import schedule
import time

def meeting_reminder():
    print("Rappel : tu as bientôt une réunion !")

# Rappel tous les jours à 14:30
schedule.every().day.at("14:30").do(meeting_reminder)

while True:
    schedule.run_pending()
    time.sleep(1)

3. Notifications temporelles avec la bibliothèque plyer

Pour rendre les notifications plus "réelles", nous pouvons utiliser la bibliothèque plyer, pour envoyer des notifications système :

Python

from plyer import notification
import time

def plyer_notification(title, message):
    notification.notify(
        title=title,
        message=message,
        app_name='Python Reminder',
        timeout=10
    )

# Exemple d'utilisation
plyer_notification("Rappel !", "Il est temps pour la réunion.")

La fonction notification.notify() affichera une notification standard du système d'exploitation.

4. Rappel avec envoi d'email

Pour envoyer des notifications par email en Python, on utilise le module smtplib. Dans cet exemple, nous configurons l'envoi d'un rappel par email à l'aide d'un serveur 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 = "Rappel sur une tâche"
    body = "Ceci est un rappel automatique : n'oublie pas de terminer ta tâche aujourd'hui."

    # On forme le message
    msg = MIMEText(body)
    msg["Subject"] = subject
    msg["From"] = sender
    msg["To"] = receiver

    # Connexion au serveur SMTP et envoi de l'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("Rappel envoyé par email.")

# Planifions l'envoi du rappel chaque jour à 8:30 du matin
schedule.every().day.at("08:30").do(send_email_reminder)

while True:
    schedule.run_pending()
    time.sleep(1)

Ici, send_email_reminder() envoie une notification par email. Configure l'adresse de l'expéditeur, du destinataire et le serveur SMTP. Cette méthode permet d'automatiser l'envoi de rappels par email facilement.

5. Rappel via Telegram

Pour envoyer des rappels via Telegram, tu peux utiliser son API. Dans cet exemple, nous envoyons une notification dans un chat Telegram en utilisant requests.

Configuration :

  1. Crée un bot dans Telegram via BotFather et obtiens ton API_TOKEN.
  2. Trouve ton CHAT_ID, en envoyant un message au bot et en récupérant l'ID du chat via l'API.
Python

import requests
import schedule
import time

def send_telegram_reminder():
    api_token = "YOUR_API_TOKEN"
    chat_id = "YOUR_CHAT_ID"
    message = "Rappel : tu as une tâche importante à faire aujourd'hui !"

    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("Rappel envoyé via Telegram.")
    else:
        print("Erreur lors de l'envoi du rappel sur Telegram.")

# Planifions l'envoi du rappel chaque jour à 9:00 du matin
schedule.every().day.at("09:00").do(send_telegram_reminder)

while True:
    schedule.run_pending()
    time.sleep(1)

Maintenant, chaque jour à 9:00 du matin, le bot enverra une notification au chat Telegram spécifié.

6. Conseils supplémentaires pour configurer des notifications

  1. Gestion des erreurs : Ajoute une gestion des erreurs pour l'envoi de notifications, par exemple, vérifie la connexion au serveur email ou Telegram.
  2. Logging : Utilise la bibliothèque logging pour enregistrer les événements liés aux rappels. Cela t'aidera à savoir quand les rappels ont réellement été envoyés.
  3. Flexibilité des paramètres : Si tu prévois d'utiliser les rappels dans un projet, crée une fonction pour définir dynamiquement les horaires et les types de notifications, afin d'ajuster plus facilement les paramètres.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION