E-Paper-Calendar/Calendar/events.py
2018-08-27 00:21:30 +02:00

117 lines
4.2 KiB
Python

import epd7in5b
from PIL import Image, ImageDraw, ImageFont, ImageOps
import calendar, pyowm
from ics import Calendar, Event
from datetime import datetime
from time import sleep
from urllib.request import urlopen
import arrow
epd = epd7in5b.EPD()
epd.init()
url ="https://calendar.yahoo.com/jmuj6o2qum5wwa7aboeb3qxss5hssod4rlmbev5g/c4a110ace0d020e426cea69a2a873a19/ycal.ics?id=131"
#Enter your ical url above
c = Calendar(urlopen(url).read().decode('iso-8859-1'))
e = Event()
open = Image.open
EPD_WIDTH = 640
EPD_HEIGHT = 384
fpath = '/usr/share/fonts/truetype/Assistant/Assistant-Bold.otf'
fontsmall = ImageFont.truetype(fpath, 20)
fontbig = ImageFont.truetype(fpath, 34)
path = './dev-only/'
background = open(path+'background.bmp')
template = open(path+'event.bmp')
positions = {
'A1': (517,11), 'A2': (462,11), 'A3': (407,11), 'A4': (352,11), 'A5': (297,11),
'A6': (242,11), 'A7': (187,11), 'A8': (132,11), 'A9': (77,11), 'A10': (22,11),
'B1': (515,71), 'B2': (460, 71), 'B3': (460, 71), 'B4': (460, 71), 'B5': (460, 71),
'B6': (460, 71), 'B7': (460, 71), 'B8': (460, 71), 'B9': (460, 71), 'B10': (460, 71),
'C1':(542,313), 'C2':(487,313), 'C3':(432,313), 'C4':(377,313), 'C5':(322,313),
'C6':(267,313), 'C7':(212,313), 'C8':(157,313), 'C9':(102,313), 'C10':(47,313)
}
def main():
for i in range(1):
time = datetime.now()
for i in range(1):
image = Image.new('L', (EPD_WIDTH, EPD_HEIGHT), 255)
draw = (ImageDraw.Draw(image)).bitmap
print('Today is:',time.strftime('%a %-d %b %y'))
print('The time is ', time.strftime('%H:%M'))
edaylist = []
for events in c.events:
if str(time.year) in str((events.begin).format('YYYY')):
if str(time.month) in str((events.begin).format('M')):
edaylist.append((events.begin).format('D'))
print('In this month, you have',len(edaylist),'Events')
print(edaylist)
enamelist = []
for events in c.events:
if str(time.year) in str((events.begin).format('YYYY')):
if str(time.month) in str((events.begin).format('M')):
if str(time.month) in str((events.begin).format('M')):
enamelist.append(str(events.name))
for items in edaylist:
#date
txt = (events.begin).format('D')
w,h = fontbig.getsize(txt)
space = Image.new('1', (50,50), color=255)
date = ImageDraw.Draw(space)
date.text((int((50-w)/2),int((50-h)/2)), txt, fill=0,font=fontbig)
rotate = space.rotate(270, expand=1)
image.paste(rotate, positions['A'+len])#(517,11))
#print(enamelist)
#for items in enamelist:
#draw(positions['A'+events
etimelist = []
for events in c.events:
if str(time.year) in str((events.begin).format('YYYY')):
if str(time.month) in str((events.begin).format('M')):
etimelist.append(events.begin.format('HH:mm'))
print(etimelist)
# name
txt = enamelist[0]
w,h = fontsmall.getsize(txt) #works!
space = Image.new('1', (234,50), color=255)
name = ImageDraw.Draw(space)
name.text((int((234-w)/2),int((50-h)/2)), txt, fill=0, font = fontsmall)
rotate = space.rotate(270, expand=1)
image.paste(rotate, (515,71))
# time
txt = etimelist[0]
w,h = fontsmall.getsize(txt)
space = Image.new('1', (60,25), color=255) #use L and 127 to show
date = ImageDraw.Draw(space)
date.text((int((60-w)/2),int((25-h)/2)), txt, fill=0 ,font=fontsmall)
rotate = space.rotate(270, expand=1)
image.paste(rotate, (542,313))
draw((0,0), background)
draw((515,0), template)
del edaylist[:]
del enamelist[:]
del etimelist[:]
epd.display_frame(epd.get_frame_buffer(image))
if __name__ == '__main__':
main()