cipherbliss_blog

Connaître la couleur des jours EDF Tempo en ligne de commande

EDF expose une API pour connaître les couleurs de jour TEMPO, mais cette api n'est pas bien référencée sur le wouaib, ce sont donc des sites qui n'ont rien à voir qui vous donneront cette info avec moult trackers et pubs de partout.

Voici l'url dont vous avez besoin:

> https://api-commerce.edf.fr/commerce/activet/v1/calendrier-jours-effacement?option=TEMPO&dateApplicationBorneInf={date_inférieure}&dateApplicationBorneSup={date_supérieure}&identifiantConsommateur=src

Cette API de commerce EDF ne fonctionne que si vous demandez des dates ayant 365 jours d'écart de différence, et si vous ne mettez pas de zéro précédant le numéro de journée au format année-mois-jour. Autre limitation, la couleur du jour du lendemain vous sera donnée seulement à partir de 11h du matin dans la journée.

Fabriquez vous un petit script en python pour aller pêcher ce calendrier, piocher les couleurs des deux derniers jours. Il vous suffira d'un alias de commande pour lancer "python monscripttempo.py" en ayant le dossier où le script est placé dans votre variable d'environnement PATH.


import requests
import json
from datetime import datetime, timedelta 

def date_il_y_a_un_an(date):
    date_obj = datetime.strptime(date, "%Y-%m-%d")
    date_il_y_a_un_an = date_obj - timedelta(days=365)
    return date_il_y_a_un_an.strftime("%Y-%m-%d")

def get_tempo_for_today_and_tomorrow():
    # Obtenir la date d'aujourd'hui
    datenow = datetime.now()
    sup = (datenow + timedelta(days=1))

    inf = date_il_y_a_un_an(datenow.strftime("%Y-%m-%d"))

    # Obtenir la date de demain
    sup = sup.strftime("%Y-%m-%d")
    sup = sup.replace("-0", "-")
    inf = inf.replace("-0", "-")

    # print("Date inf :", inf)
    # print("Date sup:", sup)

    # URL de l'API d'EDF pour récupérer les informations sur les couleurs des jours de l'offre Tempo
    url = f"https://api-commerce.edf.fr/commerce/activet/v1/calendrier-jours-effacement?option=TEMPO&dateApplicationBorneInf={inf}&dateApplicationBorneSup={sup}&identifiantConsommateur=src"
    print(url)
    # Effectuer la requête HTTP et récupérer la réponse JSON
    response = requests.get(url)
    data = json.loads(response.text)

    # Récupérer la liste des couleurs des jours pour les 30 prochains jours
    calendrier = data["content"]["options"][0]["calendrier"]

    texte_retour=""

    # # Afficher les couleurs des jours pour le prochain jour
    for jour in calendrier[-2:]:
        date = jour["dateApplication"]
        code_couleur = jour["statut"]
        if code_couleur == "TEMPO_BLEU":
            texte_retour+=(f"\033[34m{date}: journée {code_couleur}\033[0m\n")
        elif code_couleur == "TEMPO_BLANC":
            texte_retour+=(f"\033[37m{date}: journée {code_couleur}\033[0m\n")
        elif code_couleur == "TEMPO_ROUGE":
            texte_retour+=(f"\033[31m{date}: journée {code_couleur}\033[0m\n")
        else:
            texte_retour+=(f"{date}: journée {code_couleur}")

    return texte_retour

texte = get_tempo_for_today_and_tomorrow()
print(texte)

Bonne réduction des pointes de conso!