You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
5.4 KiB
Python
121 lines
5.4 KiB
Python
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))
|