diff options
Diffstat (limited to 'src/pyssg/page.py')
-rw-r--r-- | src/pyssg/page.py | 42 |
1 files changed, 28 insertions, 14 deletions
diff --git a/src/pyssg/page.py b/src/pyssg/page.py index 1d2f6dd..e03ca6b 100644 --- a/src/pyssg/page.py +++ b/src/pyssg/page.py @@ -15,30 +15,33 @@ class Page: self.meta: dict = meta # data from self.meta - self.title: str = None - self.author: str = None + self.title: str = '' + self.author: str = '' self.c_datetime: datetime = None self.m_datetime: datetime = None - self.summary: str = None - self.lang: str = None + self.summary: str = '' + self.lang: str = 'en' self.tags: list = None + # also from self.meta, but for og metadata + self.og: dict[str, str] = dict() + self.__parse_meta() def __lt__(self, other): return self.c_time < other.c_time + # parses meta from self.meta, for og, it prioritizes, + # the actual og meta def __parse_meta(self): try: self.title = self.meta['title'][0] - except KeyError: - pass + except KeyError: pass try: self.author = self.meta['author'][0] - except KeyError: - pass + except KeyError: pass self.c_datetime = datetime.fromtimestamp(self.c_time, tz=timezone.utc) @@ -49,15 +52,26 @@ class Page: try: self.summary = self.meta['summary'][0] - except KeyError: - pass + except KeyError: pass try: self.lang = self.meta['lang'][0] - except KeyError: - pass + except KeyError: pass try: self.tags = self.meta['tags'] - except KeyError: - pass + self.tags.sort() + except KeyError: pass + + try: + # og_e = object graph entry + for og_e in self.meta['og']: + kv: str = og_e.split(',', 1) + if len(kv) != 2: + raise Exception('invalid og syntax') + + k: str = kv[0].strip() + v: str = kv[1].strip() + + self.og[k] = v + except KeyError: pass |