-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcafe.py
120 lines (96 loc) · 3.4 KB
/
cafe.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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
from bs4 import BeautifulSoup
import http.client
import datetime
import unidecode
import requests
# import schedule
def EatSpaces(s):
new_s = s.replace(' ', ' ')
while new_s != s:
s = new_s
new_s = s.replace(' ', ' ')
new_s = new_s.replace('\n', ' ')
while new_s != s:
s = new_s
new_s = s.replace('\n', ' ')
new_s = new_s.replace('\x92', '\'')
while new_s != s:
s = new_s
new_s = s.replace('\x92', '\'')
return new_s.strip()
def ObtainTodaysMenu(today):
page = requests.get('http://www.polymtl.ca/vie/cafe/').text
b = BeautifulSoup(page, 'html.parser')
menu = [[], [], [], [], [], []]
divContenu = b.find("div", id="contenu-texte")
rows = divContenu.find_all("tr")
if not rows:
return None
rows.pop(0)
for row in rows:
cells = row.find_all("td")
for (i, cell) in zip(range(6), cells):
text = EatSpaces(cell.get_text().capitalize())
menu[i].append(text)
titresPlats = menu.pop(0)
if today < len(menu):
return zip(titresPlats, menu[today])
else:
return None
class Cafe:
def __init__(self, irc):
self.irc = irc
"""self.scheduler = schedule.Scheduler()
self.job = self.scheduler.every().day.at("12:45").do(self.print_manger)
self.cease = self.scheduler.run_continuously()"""
def dispose(self):
"""self.scheduler.clear()
self.cease.set()"""
pass
def print_manger(self):
now = datetime.datetime.now()
now = now.strftime("%Y-%m-%d %H:%M:%S")
print(now + " JE VEUX MANGER!")
self.irc.privmsg("#dorsal-fun", "C'est le temps de manger!")
now = datetime.datetime.now()
now = now.strftime("%Y-%m-%d %H:%M:%S")
print(now + " OMNOMNOM")
def action_getmenu(self, from_, chan, parts):
menu = None
s = "Je ne comprends pas :("
jours = {"lundi": 0, "mardi": 1, "mercredi": 2,
"jeudi": 3, "vendredi": 4, "samedi": 5, "dimanche": 6}
today = datetime.datetime.now().weekday()
tomorrow = (today + 1) % 7
if len(parts) > 0:
if parts[0] in jours:
menu = ObtainTodaysMenu(jours[parts[0]])
if not menu:
s = 'Impossible d\'obtenir le menu :('
elif parts[0] == "demain":
menu = ObtainTodaysMenu(tomorrow)
if not menu:
s = 'Impossible d\'obtenir le menu :('
elif parts[0] == "ericsson":
s = "Club sandwich!"
elif parts[0] == "scientist":
s = "Des choses aux poireaux"
elif parts[0] == "dejadead":
s = "Sandwich pain blanc et jambon"
elif parts[0] == "simark":
s = "nutella"
else:
menu = ObtainTodaysMenu(today)
if not menu:
s = 'Impossible d\'obtenir le menu :('
if menu:
s = ', '.join([hey + ": " + ho for (hey, ho) in menu])
# Replace unicode apostrophe with latin-1 compatible
s = s.replace("\u2019", "'")
self.irc.privmsg(
chan, s.encode("latin-1", errors="ignore").decode("latin-1"))
def on_chanmsg(self, from_, chan, msg):
parts = msg.split()[1:]
self.action_getmenu(from_, chan, parts)
def halp(self):
return ["!menu: get today's menu"]