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.

134 lines
5.9 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 = {}
total = 0
for folder in folders:
contribution = []
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 any(position in ['nw','ne','sw','se'] for position in content):
postit = {
"title": metadata["title"],
"slug": folder,
}
for position in content:
postit[position] = content[position]
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
contribution.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,
}
contribution.append(postit)
amount = len(contribution)
print(f"{amount:03} - {folder}")
total = total + amount
contents[folder] = contribution
except Exception as e:
print(f"{folder} has an error!")
print(e)
print(f'Total: {total}')
with open("postit/contents.json", "w") as f:
f.write(json.dumps(contents))