Module structure
This commit is contained in:
parent
60fcd8bee1
commit
34d10270d6
|
@ -1,19 +1,21 @@
|
|||
|
||||
# Kobo Calendar Server
|
||||
"""# Kobo Calendar Server
|
||||
|
||||
Small calendar web-server pulling from ICAL files, and presenting events in
|
||||
a lightweight html frontend.
|
||||
a lightweight HMTL frontend.
|
||||
|
||||
The motivation was to create a lightweight wall calendar to use with an old Kobo
|
||||
Aura e-reader, to take advantage of the it's e-ink screen.
|
||||
The motivation was to create a lightweight wall calendar to use with an old
|
||||
[Kobo Aura e-reader](https://en.wikipedia.org/wiki/Kobo_Aura), to take
|
||||
advantage of the its e-ink screen, but I had problems getting it to run 24/7.
|
||||
|
||||
## Example usage
|
||||
|
||||
1. Edit `config.py` to include links to your ICAL files. (Google Calendar hidden
|
||||
ICAL links works great here.)
|
||||
2. Launch server using something like: `python main.py --port 8082 --hostname 192.168.87.197`
|
||||
3. Navigate to [192.168.87.197:8082](http://192.168.87.197:8082/).
|
||||
3. Navigate to <http://192.168.87.197:8082>.
|
||||
4. Enjoy
|
||||
"""
|
||||
|
||||
__all__ = ['__version__']
|
||||
|
||||
|
||||
from _version import __version__
|
|
@ -2,7 +2,7 @@ import argparse
|
|||
import bottle
|
||||
import datetime
|
||||
|
||||
import google_calendar
|
||||
from . import google_calendar
|
||||
|
||||
import config
|
||||
|
||||
|
@ -39,13 +39,7 @@ def render_calendar(events_map, today):
|
|||
header = today.strftime('%B %Y')
|
||||
return TEMPLATE_INDEX.render(days = days, header = header)
|
||||
|
||||
## Paths
|
||||
|
||||
@bottle.route('/static/<path:path>')
|
||||
def static(path):
|
||||
return bottle.static_file(path, root = './static')
|
||||
|
||||
def get_events_map():
|
||||
def get_events_map() -> tuple[dict[datetime.date, list[str]], datetime.date]:
|
||||
today = datetime.date.today()
|
||||
events_map = { }
|
||||
for prefix, url in config.ICAL_LINKS.items():
|
||||
|
@ -56,19 +50,28 @@ def get_events_map():
|
|||
|
||||
return events_map, today
|
||||
|
||||
## Paths
|
||||
|
||||
@bottle.route('/static/<path:path>')
|
||||
def static(path):
|
||||
return bottle.static_file(path, root = './static')
|
||||
|
||||
@bottle.route('/')
|
||||
def reddit_index():
|
||||
def month_calendar():
|
||||
events_map, today = get_events_map()
|
||||
return render_calendar(events_map, today)
|
||||
|
||||
## Argument parsing
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--hostname', action='store', default = 'localhost', dest='hostname')
|
||||
parser.add_argument('--port', action='store', default = 8080, dest='port', type = int)
|
||||
|
||||
if __name__ == '__main__':
|
||||
def main():
|
||||
## Argument parsing
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--hostname', action='store', default = 'localhost', dest='hostname')
|
||||
parser.add_argument('--port', action='store', default = 8080, dest='port', type = int)
|
||||
args = parser.parse_args()
|
||||
|
||||
# Initialization
|
||||
bottle.run(host=args.hostname, port=args.port)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
1
kobo_wall_calendar/_version.py
Normal file
1
kobo_wall_calendar/_version.py
Normal file
|
@ -0,0 +1 @@
|
|||
__version__ = '0.1.0'
|
|
@ -10,7 +10,7 @@ logger = logging.getLogger(__name__)
|
|||
SESSION = requests_cache.CachedSession('calendar')
|
||||
|
||||
@functools.cache
|
||||
def get_events_for_month(ical_link, today):
|
||||
def get_events_for_month(ical_link: str, today: datetime.date):
|
||||
logger.warning('Downloading ical from Google')
|
||||
response = SESSION.get(ical_link)
|
||||
assert response.status_code == 200
|
4
requirements.txt
Normal file
4
requirements.txt
Normal file
|
@ -0,0 +1,4 @@
|
|||
ical
|
||||
requests_cache
|
||||
secret_loader @ git@gitfub.space:Jmaa/secret_loader.git
|
||||
bottle
|
Loading…
Reference in New Issue
Block a user