/
caldavtemps.py
executable file
·57 lines (51 loc) · 1.68 KB
/
caldavtemps.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
#!/usr/bin/env python
import caldav
from ConfigParser import SafeConfigParser
from django.utils.encoding import smart_str, smart_unicode
from datetime import datetime, timedelta
import smtplib
import time
import pytz
from email.mime.text import MIMEText
from icalendar import Calendar, Event
import vobject
import string
import re
regex_temp = re.compile(r'^Temp=(.*)')
home_tz = pytz.timezone('Europe/London')
def get_calendar():
"""
Get the calendar.
"""
parser = SafeConfigParser()
parser.read('./config.ini')
url = parser.get('calendar', 'url')
client = caldav.DAVClient(url)
principal = caldav.Principal(client)
calendars = principal.calendars()
return calendars[0]
def caldav_return():
cal = get_calendar()
now = datetime.now(tz=home_tz) # timezone?
timeMin = home_tz.localize(datetime(year=now.year, month=now.month, day=now.day, hour=now.hour, minute=now.minute, second=now.second ))
timeMax = home_tz.localize(datetime(year=now.year, month=now.month, day=now.day, hour=now.hour, minute=now.minute, second=now.second ) + timedelta(minutes=1))
#print timeMax
#print timeMin
return_temp = 13.6654
evs = cal.date_search(timeMin, timeMax)
for event in evs:
try:
cal = Calendar.from_ical(smart_str(event.data))
ev0 = cal.walk('vevent')[0]
parsedCal = vobject.readOne(event.data)
tempstring = str(ev0['SUMMARY']).replace("\\,",",")
match = regex_temp.search(tempstring)
if match:
target_temp = float(match.group(1))
return_temp = target_temp
except Exception, exc:
return_temp = 13.6654
#print return_temp
return return_temp
if __name__ == '__main__':
caldav_return()