import json import frontmatter import os import string def dump(order=None): # list all the folders path = "postit/static/contents" folders = order if folders == None: folders = [f.name for f in os.scandir(path) if f.is_dir()] contents = [] for folder in folders: try: with open(f"{path}/{folder}/contents.md", "r", encoding="utf8") as f: metadata, body = frontmatter.parse(f.read()) for content in metadata["contents"]: if type(content) == dict: if "img" in content: postit = { "title": metadata["title"], "description": content["alt"], "img": content["img"], "slug": folder, } # this is temporary, sorry elif "type" in content: if content["type"] == 'mimic-colophon': postit = { "title": metadata['title'], "type": content['type'], "original": content['original'], "original-credits": content['original-credits'], "original-action": content['original-action'], "original-date": content['original-date'], "current": content['current'], 'current-credits': content['current-credits'], "current-action": content['current-action'], "current-date": content['current-date'], "slug": folder, } elif "card" in content: postit = { "title": metadata["title"], "card": content["card"], "quote": content["quote"], "motivation": content["motivation"], "vision": content["vision"], "empathy": content["empathy"], "positivity": content["positivity"], "slug": folder, } elif "word" in content and content['category'] != 'Loot Box': continue elif "word" in content: postit = { "title": metadata["title"], "definition": content["definition"], "category": content["category"], "start": content["start"], "word": content["word"], "direction": content["direction"], "slug": folder, } if content["word"]: start = ( string.ascii_uppercase.index(content["start"][0]), int(content["start"][1:]), ) # print(start) for i in range(len(content["word"])): if content["direction"] == "H": # increase number start_f = f"{string.ascii_uppercase[start[0]]}{start[1] + i}" # print(start_f) pass else: # increase letter start_f = f"{string.ascii_uppercase[start[0] + i]}{start[1]}" # print(start_f) pass contents.append( { "title": metadata["title"], "definition": " ", "category": content["category"], "start": start_f, "word": content["word"], "direction": content["direction"], "slug": folder, } ) else: postit = { "title": metadata["title"], "description": content, "slug": folder, } contents.append(postit) amount = len(metadata["contents"]) print(f"{amount:03} - {folder}") except Exception as e: print(f"{folder} has an error!") print(e) print(f'Total: {len(contents)}') with open("postit/contents.json", "w") as f: f.write(json.dumps(contents))