Support pour liens customs
This commit is contained in:
parent
93011ac5ed
commit
3ea9ea0621
@ -25,6 +25,7 @@ import definitions as lib
|
|||||||
|
|
||||||
# Globales
|
# Globales
|
||||||
favorites = ["C"+str(i)+" MATH" for i in range(1,10)]+["C42-CMI"]
|
favorites = ["C"+str(i)+" MATH" for i in range(1,10)]+["C42-CMI"]
|
||||||
|
links = []
|
||||||
|
|
||||||
|
|
||||||
# Fonctions :
|
# Fonctions :
|
||||||
@ -50,8 +51,7 @@ def main() :
|
|||||||
date = datetime.datetime.today()
|
date = datetime.datetime.today()
|
||||||
else :
|
else :
|
||||||
date = date_tools.date_input()
|
date = date_tools.date_input()
|
||||||
|
available_rooms = ro.getrooms(date,links=links)
|
||||||
available_rooms = ro.getrooms(date)
|
|
||||||
|
|
||||||
print("Les salles suivantes sont disponibles à " + str(date.hour) + ":" + str(date.minute) + ", le " + str(date.day) + " :\n")
|
print("Les salles suivantes sont disponibles à " + str(date.hour) + ":" + str(date.minute) + ", le " + str(date.day) + " :\n")
|
||||||
for room in available_rooms.values() :
|
for room in available_rooms.values() :
|
||||||
|
66
rooms_get.py
66
rooms_get.py
@ -2,7 +2,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
"""
|
"""
|
||||||
Created on Thu Feb 24 08:51:58 2022
|
Created on Thu Feb 24 08:51:58 2022
|
||||||
|
|
||||||
@author: antoine
|
@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()}
|
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
|
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.
|
de l'UFR) sur ADE depuis le site de l'Unistra.
|
||||||
@ -48,22 +47,35 @@ def sched_get(date) :
|
|||||||
date : datetime.datetime()
|
date : datetime.datetime()
|
||||||
Date au format 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
|
Returns
|
||||||
-------
|
-------
|
||||||
Le texte du résultat de la requête.
|
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)
|
day = str(date.day)
|
||||||
month = str(date.month)
|
month = str(date.month)
|
||||||
year = str(date.year)
|
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
|
return r.content
|
||||||
|
|
||||||
|
def getrooms(datet,links=[]) :
|
||||||
def getrooms(datet) :
|
|
||||||
"""
|
"""
|
||||||
Crée une liste de toute les salles, avec des informations si elles sont libres ou non
|
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é :
|
# 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 = {}
|
total_rooms = {}
|
||||||
default_hour_margin = 2
|
default_hour_margin = 2
|
||||||
|
for cal in cals:
|
||||||
for comp in cal.walk():
|
for comp in cal.walk():
|
||||||
if comp.name == "VEVENT" :
|
if comp.name == "VEVENT" :
|
||||||
# Récupération des infos
|
# Récupération des infos
|
||||||
datestart = comp.decoded("dtstart")
|
datestart = comp.decoded("dtstart")
|
||||||
dateend = comp.decoded("dtend")
|
dateend = comp.decoded("dtend")
|
||||||
roomname = str(comp.get("location"))
|
roomname = str(comp.get("location"))
|
||||||
# On ignore si c'est avant la date actuelle ( avec une valeur loin dans le futur )
|
# On ignore si c'est avant la date actuelle ( avec une valeur loin dans le futur )
|
||||||
if datestart.timestamp()<datet.timestamp():
|
if datestart.timestamp()<datet.timestamp():
|
||||||
datestart = datet+datetime.timedelta(hours=default_hour_margin) # Par défaut, si il n'y a rien de précisé pour sa prochaine occupation, elle sera occupée dans 1 ans
|
datestart = datet+datetime.timedelta(hours=default_hour_margin) # Par défaut, si il n'y a rien de précisé pour sa prochaine occupation, elle sera occupée dans 1 ans
|
||||||
if dateend.timestamp()<datet.timestamp():
|
if dateend.timestamp()<datet.timestamp():
|
||||||
dateend= datestart+datetime.timedelta(hours=default_hour_margin) # Par défaut, si il n'y a rien de précisé pour sa prochaine occupation, elle sera occupée dans 1 an après son occupation
|
dateend= datestart+datetime.timedelta(hours=default_hour_margin) # Par défaut, si il n'y a rien de précisé pour sa prochaine occupation, elle sera occupée dans 1 an après son occupation
|
||||||
|
|
||||||
# J'enregistre dans le dico
|
# J'enregistre dans le dico
|
||||||
if roomname in total_rooms.keys():
|
if roomname in total_rooms.keys():
|
||||||
if datestart.timestamp() > total_rooms[roomname]["occupied_at"].timestamp():
|
if datestart.timestamp() > total_rooms[roomname]["occupied_at"].timestamp():
|
||||||
datestart = total_rooms[roomname]["occupied_at"]
|
datestart = total_rooms[roomname]["occupied_at"]
|
||||||
if dateend.timestamp() > total_rooms[roomname]["free_at"].timestamp():
|
if dateend.timestamp() > total_rooms[roomname]["free_at"].timestamp():
|
||||||
dateend= total_rooms[roomname]["free_at"]
|
dateend= total_rooms[roomname]["free_at"]
|
||||||
total_rooms[roomname] = room(roomname,datestart,dateend)
|
total_rooms[roomname] = room(roomname,datestart,dateend)
|
||||||
|
|
||||||
return total_rooms
|
return total_rooms
|
||||||
|
Loading…
x
Reference in New Issue
Block a user