# -*- coding: utf-8 -*-
-import constants
-import file_writer
import gkeepapi
import os
import re
+from typing import List, Dict
+
+import constants
+import file_writer
import renderer
import secrets
class gkeep_renderer(renderer.debuggable_abstaining_renderer):
- def __init__(self, name_to_timeout_dict):
+ def __init__(self, name_to_timeout_dict: Dict[str, int]) -> None:
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.")
self.colors_by_name = {
"white": "#002222",
"green": "#345920",
"gray": "#3c3f4c",
"teal": "#16504B",
}
+ 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.")
- def debug_prefix(self):
+ def debug_prefix(self) -> str:
return "gkeep"
- def periodic_render(self, key):
+ def periodic_render(self: str, key) -> bool:
strikethrough = re.compile("(\u2611[^\n]*)\n", re.UNICODE)
linkify = re.compile(r".*(https?:\/\/\S+).*")
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)
+ self.debug_print(f"Note title '{title}'")
if contents != "" and not contents.isspace():
contents = strikethrough.sub("", contents)
- self.debug_print("Note contents:\n%s" % contents)
+ self.debug_print(f"Note contents:\n{contents}")
contents = contents.replace(
- u"\u2610 ", u'<LI><INPUT TYPE="checkbox"> '
+ "\u2610 ", '<LI><INPUT TYPE="checkbox"> '
)
contents = linkify.sub(r'<a href="\1">\1</a>', contents)
if color in list(self.colors_by_name.keys()):
color = self.colors_by_name[color]
else:
- self.debug_print("Unknown color '%s'" % color)
- f = file_writer.file_writer(filename)
- f.write(
- """
+ self.debug_print(f"Unknown color '{color}'")
+ with file_writer.file_writer(filename) as f:
+ f.write(
+ f"""
<STYLE type="text/css">
a:link { color:#88bfbf; }
ul { list-style-type:none; }
</STYLE>
-<DIV STYLE="border-radius: 25px; border-style: solid; padding: 20px; background-color: %s; color: #eeeeee; font-size: x-large;">
-<p style="color: #ffffff; font-size:larger"><B>%s</B></p>
+<DIV STYLE="border-radius: 25px; border-style: solid; padding: 20px; background-color: {color}; color: #eeeeee; font-size: x-large;">
+<p style="color: #ffffff; font-size:larger"><B>{note.title}</B></p>
<HR style="border-top: 3px solid white;">"""
- % (color, note.title)
- )
- if num_lines >= 12 and max_length < 120:
- self.debug_print(
- "%d lines (max=%d chars): two columns" % (num_lines, max_length)
- )
- f.write('<TABLE BORDER=0 WIDTH=100%%><TR valign="top">')
- f.write('<TD WIDTH=50%% style="color:#eeeeee; font-size:large">\n')
- f.write("<FONT><UL STYLE='list-style-type:none'>")
- count = 0
- for x in individual_lines:
- f.write(x + "\n")
- count += 1
- if count == num_lines / 2:
- f.write("</UL></FONT></TD>\n")
- f.write(
- '<TD WIDTH=50%% style="color:#eeeeee; font-size:large">\n'
- )
- f.write("<FONT><UL STYLE='list-style-type:none'>")
- f.write("</UL></FONT></TD></TR></TABLE></DIV>\n")
- else:
- self.debug_print(
- "%d lines (max=%d chars): one column" % (num_lines, max_length)
)
- f.write("<FONT><UL>%s</UL></FONT>" % contents)
- f.write("</DIV>")
- f.close()
+ if num_lines >= 12 and max_length < 120:
+ self.debug_print(
+ f"{num_lines} lines (max={max_length} chars): two columns"
+ )
+ f.write('<TABLE BORDER=0 WIDTH=100%><TR valign="top">')
+ f.write(
+ '<TD WIDTH=50% style="color:#eeeeee; font-size:large">\n'
+ )
+ f.write("<FONT><UL STYLE='list-style-type:none'>")
+ count = 0
+ for x in individual_lines:
+ f.write(x + "\n")
+ count += 1
+ if count == num_lines / 2:
+ f.write("</UL></FONT></TD>\n")
+ f.write(
+ '<TD WIDTH=50% style="color:#eeeeee; font-size:large">\n'
+ )
+ f.write("<FONT><UL STYLE='list-style-type:none'>")
+ f.write("</UL></FONT></TD></TR></TABLE></DIV>\n")
+ else:
+ self.debug_print(
+ f"{num_lines} lines (max={max_length} chars): one column"
+ )
+ f.write(f"<FONT><UL>{contents}</UL></FONT>")
+ f.write("</DIV>")
else:
- self.debug_print("Note is empty, deleting %s." % filename)
+ self.debug_print(f"Note is empty, deleting {filename}.")
_ = os.path.join(constants.pages_dir, filename)
try:
os.remove(_)