X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=gkeep_renderer.py;h=3846efb6664ee73c452b327e159cc51b2455e9d7;hb=138f8de1ece8b876693d7b8dfc6a139e76aa58b9;hp=d7765c8a32950a3d21bfb7d71536f9731e3b418e;hpb=55bcd1ba1b9d481e0d0dc604932bcc0f7f4fa127;p=kiosk.git diff --git a/gkeep_renderer.py b/gkeep_renderer.py index d7765c8..3846efb 100644 --- a/gkeep_renderer.py +++ b/gkeep_renderer.py @@ -7,7 +7,7 @@ from typing import Dict import gkeepapi # type: ignore -import constants +import kiosk_constants import file_writer import renderer import kiosk_secrets as secrets @@ -34,20 +34,31 @@ class gkeep_renderer(renderer.abstaining_renderer): "teal": "#16504B", } self.keep = gkeepapi.Keep() - success = self.keep.login( - secrets.google_keep_username, secrets.google_keep_password - ) - if success: - logger.debug("Connected with gkeep.") - else: - logger.debug("Error connecting with gkeep.") + self.token_file = "./.google_keep_token" + 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) -> str: return "gkeep" def periodic_render(self, key: str) -> bool: strikethrough = re.compile("(\u2611[^\n]*)\n", re.UNICODE) - linkify = re.compile(r".*(https?:\/\/\S+).*") + # linkify = re.compile(r".*(https?:\/\/\S+).*") self.keep.sync() result_list = self.keep.find(labels=[self.keep.findLabel("kiosk")]) @@ -65,13 +76,12 @@ class gkeep_renderer(renderer.abstaining_renderer): contents = contents.replace( "\u2610 ", '
  •  ' ) - #contents = linkify.sub(r'\1', contents) + # contents = linkify.sub(r'\1', contents) individual_lines = contents.split("\n") num_lines = len(individual_lines) contents = "" for x in individual_lines: - length = len(x) leading_spaces = len(x) - len(x.lstrip(" ")) leading_spaces //= 2 leading_spaces = int(leading_spaces) @@ -91,23 +101,24 @@ class gkeep_renderer(renderer.abstaining_renderer): logger.debug(f"Unknown color '{color}'") print(f"TITLE: {color} {note.title}") with file_writer.file_writer(filename) as f: - f.write(""" + f.write( + """
    -""" % color - ) - f.write(f""" +""" + % color + ) + f.write( + f"""

    {note.title}


    """ - ) - if num_lines >= 12: - logger.debug( - f"{num_lines} lines: two column mode" - ) + ) + if num_lines >= 10: + logger.debug(f"{num_lines} lines: two column mode") f.write('') f.write( '
    \n' @@ -123,29 +134,39 @@ class gkeep_renderer(renderer.abstaining_renderer): '\n' ) f.write("
      ") - f.write("
    \n") + f.write("") else: - logger.debug( - f"{num_lines} lines: one column mode" - ) + logger.debug(f"{num_lines} lines: one column mode") f.write(f"") f.write("") else: logger.debug(f"Note is empty, deleting {filename}.") - _ = os.path.join(constants.pages_dir, filename) + _ = os.path.join(kiosk_constants.pages_dir, filename) try: os.remove(_) except: pass + + if self.token_file: + token = self.keep.getMasterToken() + os.umask(0) + descriptor = os.open( + path=self.token_file, + flags=(os.O_WRONLY | os.O_CREAT | os.O_TRUNC), + mode=0o600, + ) + with open(descriptor, "w") as wf: + print(token, file=wf) + logger.debug("Saved Google Keep token successfully.") return True # Test -#logger.setLevel(logging.DEBUG) -#ch = logging.StreamHandler() -#ch.setLevel(logging.DEBUG) -#formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') -#ch.setFormatter(formatter) -#logger.addHandler(ch) -#x = gkeep_renderer({"Test", 1234}) -#x.periodic_render("Test") +# logger.setLevel(logging.DEBUG) +# ch = logging.StreamHandler() +# ch.setLevel(logging.DEBUG) +# formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') +# ch.setFormatter(formatter) +# logger.addHandler(ch) +# x = gkeep_renderer({"Test", 1234}) +# x.periodic_render("Test")