diff options
| author | Blaise Thompson <blaise@untzag.com> | 2021-07-05 22:40:33 -0500 |
|---|---|---|
| committer | Blaise Thompson <blaise@untzag.com> | 2021-07-05 22:40:33 -0500 |
| commit | 17fba39d4beeecdeb4c84565e9b3d0c2054d5dca (patch) | |
| tree | da951e20a8d3939afba7eb251d502ee3981dd473 /build_html.py | |
| parent | ba52f5d4a24cdc58a4835d53922c8f3aa693b792 (diff) | |
build no html
Diffstat (limited to 'build_html.py')
| -rw-r--r-- | build_html.py | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/build_html.py b/build_html.py deleted file mode 100644 index d05f8cf..0000000 --- a/build_html.py +++ /dev/null @@ -1,119 +0,0 @@ -"""Build html to be served at agenda.blaise.zone.""" - -import os -import pathlib - -import datetime - -__here__ = pathlib.Path(__file__).parent - - -# consume org file -------------------------------------------------------------------------------- - - -global latest_scheduled -latest_scheduled = datetime.date.today() - - -class Event: - def __init__(self, line): - global latest_scheduled - # timestamp (start time) - year, month, day = (int(s) for s in line.split("<")[1][0:10].split("-")) - self.timestamp = datetime.date(year, month, day) - if self.timestamp > latest_scheduled: - latest_scheduled = self.timestamp - # end time - if "--<" in line: - year, month, day = (int(s) for s in line.split("--<")[1][0:10].split("-")) - self.end = datetime.date(year, month, day) - if self.end > latest_scheduled: - latest_scheduled = self.end - else: - self.end = None - # time of day - tod = line[line.find("<") + 1 : line.find(">")][15:] - # description - self.description = " ".join(filter(None, [tod, line.split(">")[-1].strip()])) - - -org_fp = "/home/blaise/org/agenda.org" - -events = [] - -with open(org_fp, "r") as org: - for line in org: - line = line.strip() - if not line: - continue - if not line[0] == "*": - continue - if ":private:" in line: - continue - if ":info:" in line: - continue - events.append(Event(line)) - - -# create html ------------------------------------------------------------------------------------- - - -today = datetime.date.today() - -if not os.path.isdir(__here__ / "public"): - os.mkdir(__here__ / "public") - -head = """<html> -<head> - <meta charset="utf-8" name="viewport" content="width=80ch"> - <title>agenda.blaise.zone</title> - <link rel="stylesheet" href="style.css"> -</head> -""" - -with open(__here__ / "public" / "index.html", "w") as html: - # header - html.write("<!DOCTYPE html>\n") - html.write(head) - html.write("<body>\n") - html.write("<h1><a href='http://blaise.zone'>blaise</a>-agenda</h1>\n") - html.write("<hr>") - html.write("<p>") - html.write("Welcome to my public agenda!<br>\n") - html.write("All timestamps are in 'blaise-local-time'.<br>\n") - html.write("Thanks for stopping by! —Blaise\n") - html.write("</p>") - # body - monday = today - datetime.timedelta(days=today.weekday()) - while True: - year, week, day = monday.isocalendar() - id = f"{year}-w{week}" - html.write( - f'<h2 id="{id}"><a href=#{id} style=color:#f0c674>{year} W{week}</a></h2>' - ) - for i in range(7): - day = monday + datetime.timedelta(days=i) - id = day.isoformat() - html.write( - f"<h3 id={id}><a href=#{id}>{day.isoformat()} {day.strftime('%A')}</a></h3>" - ) - for event in events: - if event.end: - if event.timestamp <= day and event.end >= day: - total = event.end - event.timestamp - elapsed = total - (event.end - day) - html.write( - f"(day {elapsed.days+1}/{total.days+1}) {event.description}<br>" - ) - else: - if event.timestamp == day: - html.write(f"{event.description}<br>") - # increment - monday += datetime.timedelta(days=7) - if monday > latest_scheduled: - break - # footer - html.write("<hr>") - html.write(f"last updated {today.isoformat()}") - html.write("</body>\n") - html.write("</html>\n") |
