Code cleanup, class naming improvements

This commit is contained in:
Ace 2020-05-26 19:10:20 +02:00
parent 33520a23fe
commit c4bb24bef9
7 changed files with 40 additions and 81 deletions

View File

@ -1,4 +1,5 @@
##from .inkycal_agenda import agenda
##from .inkycal_calendar import calendar
##from .inkycal_weather import weather
##from .inkycal_rss import rss
from .inkycal_agenda import Agenda
from .inkycal_calendar import Calendar
from .inkycal_weather import Weather
from .inkycal_rss import RSS
#from .inkycal_image import Image

View File

@ -16,7 +16,7 @@ Copyright by aceisace
import arrow
from urllib.request import urlopen
import logging
import time # timezone, timing speed of execution
import time
import os
try:
@ -36,7 +36,7 @@ filename = os.path.basename(__file__).split('.py')[0]
logger = logging.getLogger(filename)
logger.setLevel(level=logging.INFO)
class icalendar:
class iCalendar:
"""iCalendar parsing moudule for inkycal.
Parses events from given iCalendar URLs / paths"""
@ -108,7 +108,7 @@ class icalendar:
t_start = timeline_start
t_end = timeline_end
else:
raise Exception ('Please input a valid arrow object!')
raise Exception('Please input a valid arrow (time) object!')
# parse non-recurring events
events = [{
@ -135,13 +135,15 @@ class icalendar:
# Parse recurring events
recurring_events = [recurring_ical_events.of(ical).between(
fmt(t_start),fmt(t_end)) for ical in self.icalendars]
re_events = [{
'title':events.get('SUMMARY').lstrip(),
'begin':arrow.get(events.get('DTSTART').dt).to(timezone
if arrow.get(events.get('dtstart').dt).format('HH:mm') != '00:00' else 'UTC'),
if arrow.get(events.get('dtstart').dt).format('HH:mm') != '00:00'
else 'UTC'),
'end':arrow.get(events.get("DTEND").dt).to(timezone
if arrow.get(events.get('dtstart').dt).format('HH:mm') != '00:00' else 'UTC')
if arrow.get(events.get('dtstart').dt).format('HH:mm') != '00:00'
else 'UTC')
} for ical in recurring_events for events in ical]
# if any recurring events were found, add them to parsed_events
@ -214,20 +216,3 @@ class icalendar:
if __name__ == '__main__':
print('running {0} in standalone mode'.format(filename))
urls = [
# Default calendar
'https://calendar.google.com/calendar/ical/en.usa%23holiday%40group.v.calendar.google.com/public/basic.ics',
# inkycal debug calendar
'https://calendar.google.com/calendar/ical/6nqv871neid5l0t7hgk6jgr24c%40group.calendar.google.com/private-c9ab692c99fb55360cbbc28bf8dedb3a/basic.ics'
]
##a = icalendar()
##a.load_url(urls)
##a.get_events(arrow.now(), arrow.now().shift(weeks=4), timezone = a.get_system_tz())
##a.show_events()

View File

@ -7,17 +7,17 @@ Copyright by aceisace
from inkycal.modules.template import inkycal_module
from inkycal.custom import *
from inkycal.modules.ical_parser import icalendar
from inkycal.modules.ical_parser import iCalendar
import calendar as cal
import arrow
filename = os.path.basename(__file__).split('.py')[0]
logger = logging.getLogger(filename)
logger.setLevel(level=logging.INFO)
logger.setLevel(level=logging.ERROR)
class agenda(inkycal_module):
class Agenda(inkycal_module):
"""Agenda class
Create agenda and show events from given icalendars
"""
@ -94,7 +94,8 @@ class agenda(inkycal_module):
for _ in range(max_lines)]
# Load icalendar from config
parser = icalendar()
self.ical = iCalendar()
parser = self.parser
if self.ical_urls:
parser.load_url(self.ical_urls)
if self.ical_files:
@ -202,7 +203,3 @@ class agenda(inkycal_module):
if __name__ == '__main__':
print('running {0} in standalone mode'.format(filename))
##size = (400, 520)
##config = {'week_starts_on': 'Monday', 'ical_urls': ['https://calendar.google.com/calendar/ical/en.usa%23holiday%40group.v.calendar.google.com/public/basic.ics']}
##a = agenda(size, config).generate_image()

View File

@ -12,9 +12,9 @@ import arrow
filename = os.path.basename(__file__).split('.py')[0]
logger = logging.getLogger(filename)
logger.setLevel(level=logging.INFO)
logger.setLevel(level=logging.ERROR)
class calendar(inkycal_module):
class Calendar(inkycal_module):
"""Calendar class
Create monthly calendar and show events from given icalendars
"""
@ -40,10 +40,10 @@ class calendar(inkycal_module):
fonts['NotoSans-SemiCondensed'], size = self.fontsize)
self.weekstart = self.config['week_starts_on']
self.show_events = True
self.date_format = 'D MMM' # used for dates
self.date_format = 'D MMM' # used for dates
self.time_format = "HH:mm" # used for timings
self.language = 'en' # Grab from settings file?
self.timezone = get_system_tz()
self.ical_urls = self.config['ical_urls']
self.ical_files = []
@ -160,13 +160,13 @@ class calendar(inkycal_module):
write(icon, (0,0), (icon_width, icon_height), str(now.day),
font=self.num_font, fill_height = 0.5, colour='white')
im_colour.paste(icon, current_day_pos, icon)
# If events should be loaded and shown...
if self.show_events == True:
# import the ical-parser
from inkycal.modules.ical_parser import icalendar
from inkycal.modules.ical_parser import iCalendar
# find out how many lines can fit at max in the event section
line_spacing = 0
@ -182,7 +182,9 @@ class calendar(inkycal_module):
month_end = arrow.get(now.ceil('month'))
# fetch events from given icalendars
parser = icalendar()
self.ical = iCalendar()
parser = self.ical
if self.ical_urls:
parser.load_url(self.ical_urls)
if self.ical_files:
@ -230,13 +232,13 @@ class calendar(inkycal_module):
date_width = int(max([self.font.getsize(
events['begin'].format(self.date_format,locale=lang))[0]
for events in upcoming_events]) * 1.1)
time_width = int(max([self.font.getsize(
events['begin'].format(self.time_format, locale=lang))[0]
for events in upcoming_events]) * 1.1)
line_height = self.font.getsize('hg')[1] + line_spacing
event_width_s = im_width - date_width - time_width
event_width_l = im_width - date_width
@ -282,9 +284,3 @@ class calendar(inkycal_module):
if __name__ == '__main__':
print('running {0} in standalone mode'.format(filename))
##size = (400, 520)
##config = {'week_starts_on': 'Monday', 'ical_urls': ['https://calendar.google.com/calendar/ical/en.usa%23holiday%40group.v.calendar.google.com/public/basic.ics']}
##a = calendar(size, config)
##a.generate_image()

View File

@ -18,16 +18,16 @@ except ImportError:
filename = os.path.basename(__file__).split('.py')[0]
logger = logging.getLogger(filename)
logger.setLevel(level=logging.INFO)
logger.setLevel(level=logging.ERROR)
class rss(inkycal_module):
class RSS(inkycal_module):
"""RSS class
parses rss feeds from given urls
parses rss/atom feeds from given urls
"""
def __init__(self, section_size, section_config):
"""Initialize inkycal_rss module"""
super().__init__(section_size, section_config)
# Module specific parameters
@ -130,20 +130,5 @@ class rss(inkycal_module):
im_black.save(images+self.name+'.png', 'PNG')
im_colour.save(images+self.name+'_colour.png', 'PNG')
##def main():
## print('Main got executed just now~~~~')
if __name__ == '__main__':
print('running {0} in standalone/debug mode'.format(filename))
##else:
## print(filename, 'imported')
## main()
##a = rss(size, config)
##a.generate_image()
##size = (384, 160)
##config = {'rss_urls': ['http://feeds.bbci.co.uk/news/world/rss.xml#']}
#config = {'rss_urls': ['http://www.tagesschau.de/xml/atom/']}
#https://www.tagesschau.de/xml/rss2 -> problematic feed

View File

@ -4,12 +4,14 @@
Weather module for Inky-Calendar software.
Copyright by aceisace
"""
from inkycal.modules.template import inkycal_module
from inkycal.custom import *
import math, decimal
import arrow
from locale import getdefaultlocale as sys_locale
try:
import pyowm
except ImportError:
@ -18,16 +20,16 @@ except ImportError:
filename = os.path.basename(__file__).split('.py')[0]
logger = logging.getLogger(filename)
logger.setLevel(level=logging.INFO)
logger.setLevel(level=logging.ERROR)
class weather(inkycal_module):
"""weather class
class Weather(inkycal_module):
"""Weather class
parses weather details from openweathermap
"""
def __init__(self, section_size, section_config):
"""Initialize inkycal_weather module"""
super().__init__(section_size, section_config)
# Module specific parameters
@ -323,7 +325,7 @@ class weather(inkycal_module):
}
for key,val in fc_data.items():
logger.info((key,val))
logger.debug((key,val))
# Get some current weather details
temperature = '{}°'.format(weather.get_temperature(unit=temp_unit)['temp'])
@ -426,10 +428,3 @@ class weather(inkycal_module):
if __name__ == '__main__':
print('running {0} in standalone mode'.format(filename))
##config = {'api_key': 'secret', 'location': 'Stuttgart, DE'}
##size = (384,80)
##a = weather(size, config)
##a.generate_image()
# Debug Data (not for production use!)