X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gkeep_renderer.py;h=974076bd89b65d3bb0798d40a04e04afb82643ca;hb=a666e14607f37c652c5e959d0f5d2f6aaf9fc4b0;hp=de1116d1ef04dd2e47a6eff1b96450c21ce8897d;hpb=d6990436e08a57ce211b10058dc61fb223cb94ec;p=kiosk.git diff --git a/gkeep_renderer.py b/gkeep_renderer.py index de1116d..974076b 100644 --- a/gkeep_renderer.py +++ b/gkeep_renderer.py @@ -1,75 +1,92 @@ -# -*- coding: utf-8 -*- +#!/usr/bin/env python3 -import constants -import file_writer -import gkeepapi +import logging import os import re +from typing import Dict + +import gkeepapi # type: ignore + +import kiosk_constants +import file_writer import renderer -import secrets +import kiosk_secrets as secrets -class gkeep_renderer(renderer.debuggable_abstaining_renderer): - def __init__(self, name_to_timeout_dict): - super(gkeep_renderer, self).__init__(name_to_timeout_dict, True) - self.keep = gkeepapi.Keep() - success = self.keep.login(secrets.google_keep_username, - secrets.google_keep_password) - if success: - self.debug_print("Connected with gkeep.") - else: - self.debug_print("Error connecting with gkeep.") + +logger = logging.getLogger(__file__) + + +class gkeep_renderer(renderer.abstaining_renderer): + def __init__(self, name_to_timeout_dict: Dict[str, int]) -> None: + super().__init__(name_to_timeout_dict) self.colors_by_name = { - 'white' : '#002222', - 'green' : '#345920', - 'darkblue' : '#1F3A5F', - 'blue' : '#2D545E', - 'orange' : '#604A19', - 'red' : '#5C2B29', - 'purple' : '#42275E', - 'pink' : '#5B2245', - 'yellow' : '#635D19', - 'brown' : '#442F19', - 'gray' : '#3c3f4c', - 'teal' : '#16504B' + "white": "#002222", + "green": "#345920", + "darkblue": "#1F3A5F", + "blue": "#2D545E", + "orange": "#604A19", + "red": "#5C2B29", + "purple": "#42275E", + "pink": "#5B2245", + "yellow": "#635D19", + "brown": "#442F19", + "gray": "#3c3f4c", + "teal": "#16504B", } + self.keep = gkeepapi.Keep() + self.token_file = "./google_keep_token.json" + if os.path.exists(self.token_file): + logger.debug("Attempting to reuse persisted Google Keep login token...") + try: + with open(self.token_file, "r") as rf: + token = "".join(rf.readlines()).strip() + self.keep.resume(secrets.google_keep_username, token) + logger.debug("Successfully reused existing login token.") + except gkeepapi.exception.LoginException: + logger.warning("Invalid token, attempting to re-login.") + + if not self.keep.login( + secrets.google_keep_username, + secrets.google_keep_password, + secrets.google_keep_mac, + ): + raise Exception("Error connecting with Google Keep?!") + logger.debug("Successfully logged in with Google Keep") - def debug_prefix(self): + def debug_prefix(self) -> str: return "gkeep" - def periodic_render(self, key): - strikethrough = re.compile('(\u2611[^\n]*)\n', re.UNICODE) - linkify = re.compile(r'.*(https?:\/\/\S+).*') + def periodic_render(self, key: str) -> bool: + strikethrough = re.compile("(\u2611[^\n]*)\n", re.UNICODE) + # linkify = re.compile(r".*(https?:\/\/\S+).*") self.keep.sync() - result_list = self.keep.find(labels=[self.keep.findLabel('kiosk')]) + result_list = self.keep.find(labels=[self.keep.findLabel("kiosk")]) for note in result_list: title = note.title title = title.replace(" ", "-") title = title.replace("/", "") - filename = "%s_2_3600.html" % title + filename = f"{title}_2_3600.html" contents = note.text + "\n" - self.debug_print("Note title '%s'" % title) - if contents != '' and not contents.isspace(): - contents = strikethrough.sub('', contents) - self.debug_print("Note contents:\n%s" % contents) - contents = contents.replace(u'\u2610 ', - u'
%s
-\n")
- f.write("
| \n")
- f.write("\n")
- f.write("
|
{note.title}
+\n'
+ )
+ f.write("
| \n")
+ f.write(
+ '\n'
+ )
+ f.write("
|