This is a refactoring of the entire Inky-Calendar software and is work in progress. The reason for uploading is to test if everything works fine. Please do not attempt to use/install this software as it can potentially break your system. If you have any improvement ideas, you're most welcome to mention them in the Issues section. Thanks!
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
"""Add rss-feeds at the bottom section of the Calendar"""
|
|
import feedparser
|
|
from random import shuffle
|
|
from settings import *
|
|
from configuration import *
|
|
|
|
"""Find out how many lines can fit at max in the bottom section"""
|
|
lines = bottom_section_height // line_height
|
|
"""Create and fill a dictionary of the positions of each line"""
|
|
line_pos = {}
|
|
for i in range(lines):
|
|
y = bottom_section_offset + i * line_height
|
|
line_pos['pos' + str(i+1)] = (x_padding, y)
|
|
|
|
if bottom_section == "RSS" and rss_feeds != []:
|
|
"""Parse the RSS-feed titles & summaries and save them to a list"""
|
|
rss_feed = []
|
|
for feeds in rss_feeds:
|
|
text = feedparser.parse(feeds)
|
|
for posts in text.entries:
|
|
rss_feed.append('{0}: {1}'.format(posts.title, posts.summary))
|
|
del rss_feed[lines:]
|
|
shuffle(rss_feed)
|
|
|
|
|
|
"""Check the lenght of each feed. Wrap the text if it doesn't fit on one line"""
|
|
flatten = lambda z: [x for y in z for x in y]
|
|
filtered, counter = [], 0
|
|
|
|
for posts in rss_feed:
|
|
wrapped = text_wrap(posts)
|
|
counter += len(filtered) + len(wrapped)
|
|
if counter < lines:
|
|
filtered.append(wrapped)
|
|
filtered = flatten(filtered)
|
|
|
|
|
|
## for i in lines: # Show line lenght and content of each line
|
|
## print(i, ' ' * (line-len(i)),'| height: ',default.getsize(i)[1])
|
|
|
|
"""Write the correctly formatted text on the display"""
|
|
for i in range(len(filtered)):
|
|
write_text(display_width, default.getsize('hg')[1],
|
|
' '+filtered[i], line_pos['pos'+str(i+1)], alignment= 'left')
|
|
|
|
image.crop((0,bottom_section_offset, display_width, display_height)).save(
|
|
'rss.png')
|
|
|
|
del filtered, rss_feed
|