diff --git a/main_cli.py b/main_cli.py index 2c1cd87..621364a 100644 --- a/main_cli.py +++ b/main_cli.py @@ -25,6 +25,7 @@ import definitions as lib # Globales favorites = ["C"+str(i)+" MATH" for i in range(1,10)]+["C42-CMI"] +links = [] # Fonctions : @@ -50,8 +51,7 @@ def main() : date = datetime.datetime.today() else : date = date_tools.date_input() - - available_rooms = ro.getrooms(date) + available_rooms = ro.getrooms(date,links=links) print("Les salles suivantes sont disponibles à " + str(date.hour) + ":" + str(date.minute) + ", le " + str(date.day) + " :\n") for room in available_rooms.values() : diff --git a/rooms_get.py b/rooms_get.py index 48de877..af9497d 100644 --- a/rooms_get.py +++ b/rooms_get.py @@ -2,7 +2,6 @@ # -*- coding: utf-8 -*- """ Created on Thu Feb 24 08:51:58 2022 - @author: antoine """ @@ -38,7 +37,7 @@ def room(name,occupied_at,free_at): """ return {"name":name,"occupied_at":occupied_at,"free_at":free_at,"free":free_at.timestamp()>occupied_at.timestamp()} -def sched_get(date) : +def sched_get(date,link=None) : """ Récupère l'emploi du temps de toutes les salles (pour le moment, juste de l'UFR) sur ADE depuis le site de l'Unistra. @@ -48,22 +47,35 @@ def sched_get(date) : date : datetime.datetime() Date au format datetime. + Optionnels: + link: + Un lien vers lequel effectuer la recherche, des informations seront remplacées: + $YEAR$ l'année + $MONTH$ le mois + $DAY$ le jour + Par défaut, sera un lien des salles de l'UFR + Returns ------- Le texte du résultat de la requête. """ + if not link: + link = "https://adecons.unistra.fr/jsp/custom/modules/plannings/anonymous_cal.jsp?resources=30626&projectId=8&calType=ical&firstDate=$YEAR$-$MONTH$-$DAY$&lastDate=$YEAR$-$MONTH$-$DAY$" + day = str(date.day) month = str(date.month) year = str(date.year) - r = requests.get("https://adecons.unistra.fr/jsp/custom/modules/plannings/anonymous_cal.jsp?resources=30626&projectId=8&calType=ical&firstDate="+year+"-"+month+"-"+day+"&lastDate="+year+"-"+month+"-"+day) + finallink = link.replace("$DAY$",day) + finallink = finallink.replace("$MONTH$",month) + finallink = finallink.replace("$YEAR$",year) + r = requests.get(finallink) return r.content - -def getrooms(datet) : +def getrooms(datet,links=[]) : """ Crée une liste de toute les salles, avec des informations si elles sont libres ou non @@ -80,29 +92,33 @@ def getrooms(datet) : """ # Récupération des informations sur l'EDT téléchargé : - cal = icalendar.Calendar.from_ical(sched_get(datet)) + cals = [] + for i in links: + cals.append(icalendar.Calendar.from_ical(sched_get(datet),link=i)) + if len(links)==0: # Par défaut, ne mets pas de lien, ce qui retourne celui de l'ufr + cals = [icalendar.Calendar.from_ical(sched_get(datet))] total_rooms = {} default_hour_margin = 2 - - for comp in cal.walk(): - if comp.name == "VEVENT" : - # Récupération des infos - datestart = comp.decoded("dtstart") - dateend = comp.decoded("dtend") - roomname = str(comp.get("location")) - # On ignore si c'est avant la date actuelle ( avec une valeur loin dans le futur ) - if datestart.timestamp() total_rooms[roomname]["occupied_at"].timestamp(): - datestart = total_rooms[roomname]["occupied_at"] - if dateend.timestamp() > total_rooms[roomname]["free_at"].timestamp(): - dateend= total_rooms[roomname]["free_at"] - total_rooms[roomname] = room(roomname,datestart,dateend) + # J'enregistre dans le dico + if roomname in total_rooms.keys(): + if datestart.timestamp() > total_rooms[roomname]["occupied_at"].timestamp(): + datestart = total_rooms[roomname]["occupied_at"] + if dateend.timestamp() > total_rooms[roomname]["free_at"].timestamp(): + dateend= total_rooms[roomname]["free_at"] + total_rooms[roomname] = room(roomname,datestart,dateend) return total_rooms