79 lines
3 KiB
Python
79 lines
3 KiB
Python
import os
|
|
import re
|
|
from datetime import datetime
|
|
|
|
markdown_dir = r"c:\Users\David\Resilio Sync\CODE\disinfozone\divination\markdown"
|
|
images_dir = r"c:\Users\David\Resilio Sync\CODE\disinfozone\divination\images"
|
|
|
|
essays = []
|
|
|
|
def parse_frontmatter(content):
|
|
# Very basic frontmatter parser for +++ blocks
|
|
match = re.search(r'^\+\+\+\s*(.*?)\s*\+\+\+', content, re.DOTALL)
|
|
if not match:
|
|
return None
|
|
|
|
fm_text = match.group(1)
|
|
data = {}
|
|
for line in fm_text.split('\n'):
|
|
if '=' in line:
|
|
key, val = line.split('=', 1)
|
|
key = key.strip()
|
|
val = val.strip().strip('"').strip("'")
|
|
if key == 'images':
|
|
# Parse list like ['/images/wide29.jpg']
|
|
images = re.findall(r"['\"](.*?)['\"]", val)
|
|
data[key] = images
|
|
else:
|
|
data[key] = val
|
|
return data
|
|
|
|
for filename in os.listdir(markdown_dir):
|
|
if filename.endswith(".md"):
|
|
path = os.path.join(markdown_dir, filename)
|
|
with open(path, 'r', encoding='utf-8') as f:
|
|
content = f.read()
|
|
data = parse_frontmatter(content)
|
|
if data:
|
|
# Add slug
|
|
data['slug'] = filename.replace('.md', '.html')
|
|
if data['slug'] == 'the-weight-of-wonder.html':
|
|
data['slug'] = 'the-weight-of-wonder-v3.html'
|
|
|
|
# Infer sigil
|
|
sigil = None
|
|
if 'images' in data and data['images']:
|
|
banner = data['images'][0]
|
|
# banner is like '/images/wide54.jpg' or '/images/onlinemadness-wide.jpg'
|
|
basename = os.path.basename(banner)
|
|
name_part = basename.replace('-wide.jpg', '').replace('wide', '').replace('.jpg', '')
|
|
|
|
if basename.startswith('wide'):
|
|
sigil_path = f"/images/div{name_part}.png"
|
|
else:
|
|
sigil_path = f"/images/{name_part}.png"
|
|
|
|
# Verify if sigil exists (rough check)
|
|
# For now just use the path
|
|
data['sigil'] = sigil_path
|
|
|
|
# Parse date for sorting
|
|
# format can be 2025-02-09T13:13:13-03:33 or 2025-10-20T22:11:33
|
|
date_str = data.get('date', '1970-01-01')
|
|
try:
|
|
# Strip timezone for simple sorting
|
|
clean_date = date_str.split('T')[0]
|
|
data['sort_date'] = datetime.strptime(clean_date, "%Y-%m-%d")
|
|
except:
|
|
data['sort_date'] = datetime(1970, 1, 1)
|
|
|
|
essays.append(data)
|
|
|
|
# Sort by date descending
|
|
essays.sort(key=lambda x: x['sort_date'], reverse=True)
|
|
|
|
# Output summary
|
|
print(f"Total essays found: {len(essays)}")
|
|
for e in essays[:5]:
|
|
print(f"[{e.get('date')}] {e.get('title')} -> {e.get('slug')}")
|
|
print(f" Image: {e.get('images')} | Sigil: {e.get('sigil')}")
|