117 lines
4.2 KiB
Python
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()
|