-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.py
90 lines (70 loc) · 2.39 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
from pypresence import Presence
import requests
import icalendar
import datetime
import time
import pytz
import json
import update
with open("VERSION") as f:
VERSION = f.read().strip()
try:
with open("config.json", "r") as f:
CONFIG = json.load(f)
except FileNotFoundError:
import setup
CONFIG = setup.CONFIG
DISCORD_APPID = "1016321832992903168"
def get_agenda():
r = requests.get(CONFIG["agenda_url"])
cal = icalendar.Calendar.from_ical(r.content)
return cal
def get_current_event(calendar):
current_utc = pytz.UTC.localize(datetime.datetime.utcnow())
events = []
for event in calendar.walk():
if event.name == "VEVENT":
start = event.get("dtstart").dt
end = event.get("dtend").dt
summary = event.get("summary")
location = event.get("location")
description = event.get("description")
events.append(
{"start": start, "end": end, "nom_cours": summary, "salle": location, "nom_prof": description})
for event in events:
if event["start"] < current_utc < event["end"]:
return event
return None
def show_presence(event):
RPC.update(details=event[CONFIG["first_key"]], state=event[CONFIG["second_key"]], large_image=CONFIG["large_icon"],
large_text=CONFIG["large_icon_text"], start=int(time.mktime(event["start"].timetuple())) + 3600,
end=int(time.mktime(event["end"].timetuple())) + 3600, buttons=[{"label": "Website", "url": "https://github.com/DocSystem/EfreiRPC"}])
def hide_presence():
RPC.clear()
print("Démarrage de EfreiRPC v" + VERSION)
print("Démarrage de la Rich Presence Discord...")
RPC = Presence(DISCORD_APPID)
RPC.connect()
print("Rich Presence connectée !")
print("Téléchargement du Planning...")
cal = get_agenda()
print("Planning téléchargé !")
print("Démarrage de l'actualisation de la Rich Presence...")
def run_rpc():
try:
while True:
curr_event = get_current_event(cal)
if curr_event is not None:
show_presence(curr_event)
else:
hide_presence()
time.sleep(15)
except KeyboardInterrupt:
print("Arrêt de EfreiRPC...")
RPC.close()
exit(0)
except:
print("Une erreur est survenue, redémarrage dans 15 secondes.")
time.sleep(15)
run_rpc()
run_rpc()