summaryrefslogtreecommitdiff
path: root/src/pyssg/page.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/pyssg/page.py')
-rw-r--r--src/pyssg/page.py42
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