Google calendar

tatal21820 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
 
Bonjour à tous

je voudrais que mes RDV s'affiche dans l'ordre chronologique et pouvoir limiter le nombre de RDV exemple 10

start_date = dat.date()
    end_date = start_date + timedelta(days=60)

    URL = "https://calendar.google.com/calendar/ical/"adresse mail"/private-.............." \
          "/basic.ics"
    ical_string = urllib.request.urlopen(URL).read()
    calendar = icalendar.Calendar.from_ical(ical_string)
    events = recurring_ical_events.of(calendar).between(start_date, end_date)

    for lbl in frm_agd1.winfo_children():
        lbl.destroy()

    for event in events:
        start = event["DTSTART"].dt
        non = event["SUMMARY"]

        agd_tatal = Label(frm_agd1, text=non + "  " + start.strftime("%A %d %b %Hh%M"), font="Arial 16", fg="WHITE",
                          bg="black")
        agd_tatal.pack(padx=10, pady=10, anchor='w')

    if not events:
        agd_tatal = Label(frm_agd1, text="Aucun rendez-vous aujourdhui", font="Arial 16", fg="WHITE", bg="black")
        agd_tatal.pack(padx=10, pady=10, anchor='w')

d'avance merci

L'adresse mail qui figurait en ligne 4 du code a été remplacée par "adresse mail" par la  Modération CCM

A voir également:

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

bonjour,

moi je mettrais tous les rendez-vous dans une liste, que je trierais et puis j'afficherais les 10 plus récents.

0
tatal21820 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
 

Merci beaucoup mais comment je suis débutant et j'ai essayé entre crochet mais sa ne fonctionne pas

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > tatal21820 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
 

Si tu souhaites de l'aide pour compléter ton programme, peux-tu partager un programme complet?

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > tatal21820 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
 

un exemple:

import requests
import urllib
import icalendar
url = "https://calendar.google.com/calendar/ical/XXXgroup.calendar.google.com/public/basic.ics"
ical_string = urllib.request.urlopen(url).read()
calendar = icalendar.Calendar.from_ical(ical_string)
l=[]
for e in calendar.walk():
    if e.name == "VEVENT":
        l.append((e.get('DTSTART').dt,e.get("SUMMARY")))
l.sort()
for i in range(10):
    ev=l[i]
    print("ev",ev[0],ev[1])
0
tatal21820 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 

ok très gros programme, je sais que sais mal codé mais y fonctionne à peu près encore quelques problème surtout celui là et une fois que tous fonctionne bien j'essairai

import locale
import urllib.request
from datetime import timedelta, datetime
from time import strftime
from tkinter import *
from tkinter import Tk
import feedparser
import icalendar
import pytz
import recurring_ical_events
import requests
from PIL import ImageTk, Image
from geopy import location

locale.setlocale(locale.LC_ALL, 'fr_FR')
dat = datetime.now()  # .strftime('%A %d %B %Y')
# dat2 = datetime.now(pytz.timezone("Europe/Paris"))
INTERVAL = 300000  # Agenda
INTERVAL2 = 864000  # Méteo

location.latitude = 47
location.longitude = 5.15

master = Tk()
# master.attributes('-fullscreen', True)
# master.bind('<Escape>', lambda e: master.destroy())
master.config(background='black')
master.geometry("800x800")

frm_weather = LabelFrame(master, font='helvetica 20', fg='WHITE', bg='black', bd="0", relief=GROOVE)
frm_weather.place(x=1220, y=20, width=700, height=400)
frm_clock = LabelFrame(master, text='', font='Arial 20', fg='WHITE', bg='black', bd="0", relief=GROOVE)
frm_clock.place(x=20, y=20, width=500, height=150)
frm_saint = LabelFrame(master, bg='black', bd="0", relief=GROOVE)
frm_saint.place(x=20, y=150, width=500, height=100)
frm_agd1 = LabelFrame(master, text="Tatal                                                                             "
                      , font="helvetica 15 underline", fg="WHITE", bg="black", bd="0", width=500, relief=GROOVE)
frm_agd1.place(x=20, y=250, height=800)

frm_agd2 = LabelFrame(master, text="Didine                                                                            "
                      , font='helvetica 15 underline', fg='WHITE', bg='black', bd="0", width=500, relief=GROOVE)

frm_agd2.place(x=20, y=450, height=800)

frm_agd3 = LabelFrame(master, text="Anniverssaire                                                                 "
                      , font='helvetica 15 underline', fg='WHITE', bg='black', bd="0", relief=GROOVE)
frm_agd3.place(x=20, y=620, width=500, height=800)

frm_info1 = LabelFrame(master, bg='black', bd="0", height=800, relief=GROOVE)
frm_info1.place(x=120, y=850, width=1650, height=100)

frm_info2 = LabelFrame(master, bg='black', bd="0", height=800, relief=GROOVE)
frm_info2.place(x=120, y=900, width=1650, height=100)

# frm_cam = LabelFrame(master, text="Caméra", font='helvetica 15', fg='WHITE', bg='black', bd="1", relief=GROOVE)
# frm_cam.place(x=500, y=100, width=700, height=400)
# frm_divers = LabelFrame(master, text="Divers", font='helvetica 15', fg='WHITE', bg='black', bd="1", height=800,
# relief=GROOVE)
# frm_divers.place(x=1250, y=450, width=600, height=400)
frm_poub = LabelFrame(master, bg='black', relief=GROOVE, width=200, height=105, bd="0")
frm_poub.place(x=750, y=750)
frm_desc = LabelFrame(frm_weather, bg='black', bd="0", height=800, relief=GROOVE)
frm_desc.place(x=130, y=25)

frm_left = LabelFrame(frm_weather, fg='WHITE', bg='black', bd="1", relief=GROOVE, width=250, height=300, border="0")
frm_left.place(x=40, y=50)
frm_center = LabelFrame(frm_weather, bg='black', bd="1", relief=GROOVE, width=150, height=300, border="0")
frm_center.pack(side=TOP)
frm_right = LabelFrame(frm_weather, fg='WHITE', bg='black', bd="0", relief=GROOVE, width=250, height=300)
frm_right.place(x=510, y=50)
frm_down = LabelFrame(frm_weather, bg='black', bd="0", relief=GROOVE, width=750, height=200)
frm_down.place(x=50, y=200)

secondframe = Frame(frm_down, width=70, height=115, bg="black", bd="1")
secondframe.pack(side=LEFT)
thirdframe = Frame(frm_down, width=70, height=115, bg="black")
thirdframe.pack(side=LEFT)
fourthframe = Frame(frm_down, width=70, height=115, bg="black")
fourthframe.pack(side=LEFT)
fifthframe = Frame(frm_down, width=70, height=115, bg="black")
fifthframe.pack(side=LEFT)
sixthframe = Frame(frm_down, width=70, height=115, bg="black")
sixthframe.pack(side=LEFT)
seventhframe = Frame(frm_down, width=70, height=115, bg="black")
seventhframe.pack(side=LEFT)

# Horloge
date_aujourdhui = Label(frm_clock, text=str(dat.strftime('%A %d %B %Y')), font='Arial 25', relief=FLAT, fg='WHITE',
                        bg='black')
date_aujourdhui.place(x=10, y=10)


def times():
    string = strftime('%H:%M')
    lbl_horl.config(text=string)
    lbl_horl.after(1000, times)


lbl_horl = Label(frm_clock, font=('calibri', 50, 'bold'), background='black', foreground='white')
lbl_horl.place(x=10, y=55)


def second():
    string = strftime('%S')
    lbl_sec.config(text=string)
    lbl_sec.after(1000, second)


lbl_sec = Label(frm_clock, font=('calibri', 35), background='black', foreground='#D5D8DC')
lbl_sec.place(x=175, y=55)

times()
second()


def task():
    # Météo
    api = "https://api.openweathermap.org/data/2.5/onecall?lat=" + str(location.latitude) + "&lon=" + str(
        location.longitude) + "&lang=fr&units=metric&exclude=hourly&appid=xxxxxxxxxxxxx"
    json_data = requests.get(api).json()

    # current
    temp = json_data['current']['temp']
    humidity = str(json_data['current']['humidity'])
    pressure = str(json_data['current']['pressure'])
    wind = json_data['current']['wind_speed']
    description = str(json_data['current']['weather'][0]['description'])
    wind2 = wind * 3.6

    # frm center
    for lbl in frm_center.winfo_children():
        lbl.destroy()
    d = Label(frm_center, font="Helvetica, 15 bold", fg="white", bg="black")
    firstimage = Label(frm_center, bg="black")
    firstimage.pack(side=TOP)
    firstdayimage = json_data['daily'][0]['weather'][0]['icon']
    photo1 = ImageTk.PhotoImage(file=f"icon/{firstdayimage}@2x.png")
    firstimage.config(image=photo1)
    firstimage.image = photo1
    d.pack(side=TOP)
    d.config(text=description)

    lbl_temp = Label(frm_center, text=f"{temp:2.1f} °C", font="Helvetica, 22 bold", fg="white", bg="black")
    lbl_temp.pack(side=TOP)

    # frm_left
    for lbl in frm_left.winfo_children():
        lbl.destroy()
    lbl_ville = Label(frm_left, text="labergement \n lès seurre", font="Helvetica, 20 bold", fg="white", bg="black")
    lbl_ville.pack(side=TOP)
    long_lat = Label(frm_left, font=("helvetica", 12), fg="white", bg="black")
    long_lat.pack(side=TOP)
    long_lat.config(text=f"{round(location.latitude, 4)}°N,  {round(location.longitude, 4)}°E")

    # frm_right
    for lbl in frm_right.winfo_children():
        lbl.destroy()
    lbl_humidite = Label(frm_right, text="Humidité" + " " + humidity + " " + "%", font="Helvetica, 15 bold",
                         fg="white",
                         bg="black")
    lbl_humidite.pack(side=TOP)
    lbl_pressure = Label(frm_right, text="Pression" + " " + pressure + " " + "hPa", font="Helvetica, 15 bold",
                         fg="white",
                         bg="black")
    lbl_pressure.pack(side=TOP)
    lbl_wind = Label(frm_right, text="Vent" + " " + str(f"{wind2:2.1f} KM/h"), font="Helvetica, 15 bold",
                     fg="white",
                     bg="black")
    lbl_wind.pack(side=TOP)

    # frm_down
    # j2
    seconde = dat + timedelta(days=1)

    for lbl in secondframe.winfo_children():
        lbl.destroy()

    day2 = Label(secondframe, bg="black", fg="white", font="arial 12 bold")
    day2.pack(side=TOP)
    day2.config(text=seconde.strftime("%A"))

    secondimage = Label(secondframe, bg="black")
    secondimage.pack(side=TOP)

    seconddayimage = json_data['daily'][1]['weather'][0]['icon']
    img = (Image.open(f"icon/{seconddayimage}@2x.png"))
    resized_image = img.resize((100, 100))
    photo2 = ImageTk.PhotoImage(resized_image)
    secondimage.config(image=photo2)
    secondimage.image = photo2
    day2temp = Label(secondframe, bg="black", fg="white", font="arial 12 bold")
    day2temp.pack(side=TOP)
    day2tempn = Label(secondframe, bg="black", fg="#60E7F0", font="arial 12 bold")
    day2tempn.pack(side=TOP)

    tempday2 = json_data['daily'][1]['temp']['day']
    tempnight2 = json_data['daily'][1]['temp']['night']

    day2temp.config(text=f"{tempday2:2.1f}°C")
    day2tempn.config(text=f"{tempnight2:2.1f}°C")

    # j3
    third = dat + timedelta(days=2)

    for lbl in thirdframe.winfo_children():
        lbl.destroy()

    day3 = Label(thirdframe, bg="black", fg="white", font="arial 12 bold")
    day3.pack(side=TOP)
    day3.config(text=third.strftime("%A"))

    thirdimage = Label(thirdframe, bg="black")
    thirdimage.pack(side=TOP)

    thirddayimage = json_data['daily'][2]['weather'][0]['icon']
    img = (Image.open(f"icon/{thirddayimage}@2x.png"))
    resized_image = img.resize((100, 100))
    photo3 = ImageTk.PhotoImage(resized_image)
    thirdimage.config(image=photo3)
    thirdimage.image = photo3
    day3temp = Label(thirdframe, bg="black", fg="white", font="arial 12 bold")
    day3temp.pack(side=TOP)
    day3tempn = Label(thirdframe, bg="black", fg="#60E7F0", font="arial 12 bold")
    day3tempn.pack(side=TOP)

    tempday3 = json_data['daily'][2]['temp']['day']
    tempnight3 = json_data['daily'][2]['temp']['night']

    day3temp.config(text=f"{tempday3:2.1f}°C")
    day3tempn.config(text=f"{tempnight3:2.1f}°C")

    # j4
    fourth = dat + timedelta(days=3)

    for lbl in fourthframe.winfo_children():
        lbl.destroy()

    day4 = Label(fourthframe, bg="black", fg="white", font="arial 12 bold")
    day4.pack(side=TOP)
    day4.config(text=fourth.strftime("%A"))

    fourthimage = Label(fourthframe, bg="black")
    fourthimage.pack(side=TOP)

    fourthdayimage = json_data['daily'][3]['weather'][0]['icon']
    img = (Image.open(f"icon/{fourthdayimage}@2x.png"))
    resized_image = img.resize((100, 100))
    photo4 = ImageTk.PhotoImage(resized_image)
    fourthimage.config(image=photo4)
    fourthimage.image = photo4
    day4temp = Label(fourthframe, bg="black", fg="white", font="arial 12 bold")
    day4temp.pack(side=TOP)
    day4tempn = Label(fourthframe, bg="black", fg="#60E7F0", font="arial 12 bold")
    day4tempn.pack(side=TOP)

    tempday4 = json_data['daily'][3]['temp']['day']
    tempnight4 = json_data['daily'][3]['temp']['night']

    day4temp.config(text=f"{tempday4:2.1f}°C")
    day4tempn.config(text=f"{tempnight4:2.1f}°C")

    # j5
    fifth = dat + timedelta(days=4)

    for lbl in fifthframe.winfo_children():
        lbl.destroy()

    day5 = Label(fifthframe, bg="black", fg="white", font="arial 12 bold")
    day5.pack(side=TOP)
    day5.config(text=fifth.strftime("%A"))

    fifthimage = Label(fifthframe, bg="black")
    fifthimage.pack(side=TOP)

    fifthdayimage = json_data['daily'][4]['weather'][0]['icon']
    img = (Image.open(f"icon/{fifthdayimage}@2x.png"))
    resized_image = img.resize((100, 100))
    photo5 = ImageTk.PhotoImage(resized_image)
    fifthimage.config(image=photo5)
    fifthimage.image = photo5
    day5temp = Label(fifthframe, bg="black", fg="white", font="arial 12 bold")
    day5temp.pack(side=TOP)
    day5tempn = Label(fifthframe, bg="black", fg="#60E7F0", font="arial 12 bold")
    day5tempn.pack(side=TOP)

    tempday5 = json_data['daily'][4]['temp']['day']
    tempnight5 = json_data['daily'][4]['temp']['night']

    day5temp.config(text=f"{tempday5:2.1f}°C")
    day5tempn.config(text=f"{tempnight5:2.1f}°C")

    # j6
    sixth = dat + timedelta(days=5)

    for lbl in sixthframe.winfo_children():
        lbl.destroy()

    day6 = Label(sixthframe, bg="black", fg="white", font="arial 12 bold")
    day6.pack(side=TOP)
    day6.config(text=sixth.strftime("%A"))

    sixthimage = Label(sixthframe, bg="black")
    sixthimage.pack(side=TOP)

    sixthdayimage = json_data['daily'][5]['weather'][0]['icon']
    img = (Image.open(f"icon/{sixthdayimage}@2x.png"))
    resized_image = img.resize((100, 100))
    photo6 = ImageTk.PhotoImage(resized_image)
    sixthimage.config(image=photo6)
    sixthimage.image = photo6
    day6temp = Label(sixthframe, bg="black", fg="white", font="arial 12 bold")
    day6temp.pack(side=TOP)
    day6tempn = Label(sixthframe, bg="black", fg="#60E7F0", font="arial 12 bold")
    day6tempn.pack(side=TOP)

    tempday6 = json_data['daily'][5]['temp']['day']
    tempnight6 = json_data['daily'][5]['temp']['night']

    day6temp.config(text=f"{tempday6:2.1f}°C")
    day6tempn.config(text=f"{tempnight6:2.1f}°C")

    # j7
    seventh = dat + timedelta(days=6)

    for lbl in seventhframe.winfo_children():
        lbl.destroy()

    day7 = Label(seventhframe, bg="black", fg="white", font="arial 12 bold")
    day7.pack(side=TOP)
    day7.config(text=seventh.strftime("%A"))

    seventhimage = Label(seventhframe, bg="black")
    seventhimage.pack(side=TOP)

    seventhdayimage = json_data['daily'][6]['weather'][0]['icon']
    img = (Image.open(f"icon/{seventhdayimage}@2x.png"))
    resized_image = img.resize((100, 100))
    photo7 = ImageTk.PhotoImage(resized_image)
    seventhimage.config(image=photo7)
    seventhimage.image = photo7
    day7temp = Label(seventhframe, bg="black", fg="white", font="arial 12 bold")
    day7temp.pack(side=TOP)
    day7tempn = Label(seventhframe, bg="black", fg="#60E7F0", font="arial 12 bold")
    day7tempn.pack(side=TOP)

    tempday7 = json_data['daily'][6]['temp']['day']
    tempnight7 = json_data['daily'][6]['temp']['night']

    day7temp.config(text=f"{tempday7:2.1f}°C")
    day7tempn.config(text=f"{tempnight7:2.1f}°C")
    master.after(INTERVAL2, task)


def task2():
    # Saint du jour
    start_date = dat.date()
    end_date = start_date + timedelta(days=1)
    URL = "https://calendar.google.com/calendar/ical/"Adresse mail N°1"/private-xxxxxxxx" \
          "/basic.ics "

    ical_string = urllib.request.urlopen(URL).read()
    calendar = icalendar.Calendar.from_ical(ical_string)
    events = recurring_ical_events.of(calendar).between(start_date, end_date)

    for lbl in frm_saint.winfo_children():
        lbl.destroy()

    for event in events:
        non = event["SUMMARY"]
        agd_saint = Label(frm_saint, text="St(e)" + non, font="Arial 26", fg="WHITE", bg="black")
        agd_saint.place(x=10, y=10)

    # Agenda1 Tatal
    start_date = dat.date()
    end_date = start_date + timedelta(days=60)

    URL = "https://calendar.google.com/calendar/ical/"Adresse mail N°2"/private-xxxxxxxxxx" \
          "/basic.ics"
    ical_string = urllib.request.urlopen(URL).read()
    calendar = icalendar.Calendar.from_ical(ical_string)
    events = recurring_ical_events.of(calendar).between(start_date, end_date)

    for lbl in frm_agd1.winfo_children():
        lbl.destroy()

    for event in events:
        start = event["DTSTART"].dt
        non = event["SUMMARY"]

        agd_tatal = Label(frm_agd1, text=non + "  " + start.strftime("%A %d %b %Hh%M"), font="Arial 16", fg="WHITE",
                          bg="black")
        agd_tatal.pack(padx=10, pady=10, anchor='w')

    if not events:
        agd_tatal = Label(frm_agd1, text="Aucun rendez-vous aujourdhui", font="Arial 16", fg="WHITE", bg="black")
        agd_tatal.pack(padx=10, pady=10, anchor='w')

    # agenda2 Didine
    start_date = dat.date()
    end_date = start_date + timedelta(days=60)
    URL = "https://calendar.google.com/calendar/ical/"Adresse mail N°3"/private-xxxxxxxxxx" \
          "/basic.ics "

    ical_string = urllib.request.urlopen(URL).read()
    calendar = icalendar.Calendar.from_ical(ical_string)
    events = recurring_ical_events.of(calendar).between(start_date, end_date)

    for lbl in frm_agd2.winfo_children():
        lbl.destroy()

    for event in events:
        start = event["DTSTART"].dt
        non = event["SUMMARY"]
        agd_didine = Label(frm_agd2, text=non + "  " + start.strftime("%A %d %b %Hh%M"), font="Arial 16", fg="WHITE",
                           bg="black")
        agd_didine.pack(padx=10, pady=10, anchor='w')

    if not events:
        agd_didine = Label(frm_agd2, text="Aucun rendez-vous aujourdhui", font="Arial 16", fg="WHITE", bg="black")
        agd_didine.pack(padx=10, pady=10, anchor='w')

    # Anniverssaire
    start_date = dat.date()
    end_date = start_date + timedelta(days=15)
    URL = "https://calendar.google.com/calendar/ical/"Adresse mail N°4"/private" \
          "xxxxxxxxxxxxxxxxx "

    ical_string = urllib.request.urlopen(URL).read()
    calendar = icalendar.Calendar.from_ical(ical_string)
    events = recurring_ical_events.of(calendar).between(start_date, end_date)

    for lbl in frm_agd3.winfo_children():
        lbl.destroy()

    for event in events:
        start = event["DTSTART"].dt
        non = event["SUMMARY"]
        agd_anni = Label(frm_agd3, text=non + "  " + start.strftime("%A %d %B"), font="Arial 16", fg="WHITE",
                         bg="black")
        agd_anni.pack(ipadx=20, pady=10, anchor='w')

        # Poubelles
        start_date = dat.date()
        end_date = start_date + timedelta(days=3)
        URL = "https://calendar.google.com/calendar/ical/xxxxxxxxx/public/basic.ics"

        ical_string = urllib.request.urlopen(URL).read()
        calendar = icalendar.Calendar.from_ical(ical_string)
        events = recurring_ical_events.of(calendar).between(start_date, end_date)

    for lbl in frm_poub.winfo_children():
        lbl.destroy()

    for event in events:
        start = event["DTSTART"].dt
        non = event["SUMMARY"]
        agd_poub = Label(frm_poub, text=non + "  " + start.strftime("%A"), font="Arial 16", fg="WHITE",
                         bg="black")
        agd_poub.pack(ipadx=20, pady=10)
        master.after(INTERVAL, task2)


# info1
feed = feedparser.parse("https://www.bienpublic.com/edition-beaune/rss").entries


def aff(inpho, pheed, n):
    inpho.config(text=pheed[n].title)
    if n + 1 < len(pheed):
        n += 1
    else:
        pheed = feedparser.parse("https://www.bienpublic.com/edition-beaune/rss").entries
        n = 0
    info.after(8000, aff, inpho, pheed, n)


info = Label(frm_info1, font='Arial 16', fg='WHITE', bg='black')
info.pack(padx=10, pady=10)
aff(info, feed, 0)

# Info2

feed = feedparser.parse("http://www.france24.com/fr/france/rss").entries


def aff(inpho, pheed, n):
    inpho.config(text=pheed[n].title)
    if n + 1 < len(pheed):
        n += 1
    else:
        pheed = feedparser.parse("http://www.france24.com/fr/france/rss").entries
        n = 0
    info.after(8000, aff, inpho, pheed, n)


info = Label(frm_info2, font='Arial 16', fg='WHITE', bg='black')
info.pack(padx=10, pady=10)
aff(info, feed, 0)

# Météo 5 jours
# https://api.openweathermap.org/data/2.5/forecast?q=Seurre%2Cfr%2C&appid=315fa7e430e072d9d8a06a66fe731d13&cnt=5

master.after(0, task)
master.after(0, task2)
master.mainloop()


de l'améliorer avec des class ou autre.

Merci pour ton aide

0
tatal21820 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   > tatal21820 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
 

j'ai essayé ton programme et il m'affiche un message d'erreur

Traceback (most recent call last):
  File "C:\Users\tatal\PycharmProjects\essais\SmartMirror.py", line 25, in <module>
    l.sort()
TypeError: can't compare datetime.datetime to datetime.date

0