summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/comic_generate.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/modules/comic_generate.py b/modules/comic_generate.py
new file mode 100644
index 0000000..de8fad8
--- /dev/null
+++ b/modules/comic_generate.py
@@ -0,0 +1,46 @@
+import datetime
+import email.utils
+import json
+import os.path
+import shutil
+import jinja2
+
+from ..config import Config
+
+META_FILE_NAME = "meta.json"
+IMAGE_FILE_NAME = "comic.png"
+
+PUBLISH_DATE_KEY = "publish_date"
+
+
+class Issue:
+ def __init__(self, path: str):
+ self.path = path
+ self.name = os.path.basename(path)
+
+ with open(os.path.join(path, META_FILE_NAME)) as f:
+ self.meta_data = json.load(f)
+
+
+def get_issues(path: str, local: bool) -> list[Issue]:
+ return_list = []
+
+ for directory in os.listdir(path):
+ if directory.endswith(".unpublished") and not local:
+ continue
+
+ return_list.append(Issue(os.path.join(path, directory)))
+
+ return_list.sort(key=lambda post: post.meta_data[PUBLISH_DATE_KEY], reverse=True)
+
+ return return_list
+
+def generate(jinja_env: jinja2.Environment, output_root_path: str, local: bool):
+ if os.path.exists(output_root_path):
+ shutil.rmtree(output_root_path)
+
+ os.mkdir(output_root_path)
+
+ issues = get_issues(Config.POST_SOURCE_DIR, local)
+
+