diff options
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/comic_generate.py | 46 |
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) + + |
