62 lines
2.4 KiB
Python
62 lines
2.4 KiB
Python
"""One-time migration of September 2026 uploads into individual highlighted photos."""
|
|
from datetime import datetime, timedelta, timezone
|
|
from pathlib import Path
|
|
import html
|
|
|
|
|
|
ART = Path("_art")
|
|
UPLOAD = "/img/arts/uploads"
|
|
OLD = [
|
|
"260cc99527c13f256d4ea39d0959f5daa942c888ea882852e73fd94f6c30b7db",
|
|
"474ab3283ce8801ac6e59b67b65b4169167053873a5a8db4a15b840a3448266c",
|
|
"7c832afa1b73023d8f2391ff40c221be9ffd468a1a96a6bf4900cbf95595d31d",
|
|
"b18a2f1c7127077c801160782012cb164759f0b9dd41762205b45e4c9a07d673",
|
|
"c53f20236f166632bff163339c8e789cc09b0d7e63c5b531b1fc20705460975b",
|
|
]
|
|
|
|
armenia = [
|
|
(OLD[2], 9), (OLD[2], 8), (OLD[2], 7), (OLD[2], 6),
|
|
(OLD[2], 5), (OLD[2], 4), (OLD[1], 0),
|
|
]
|
|
romania = [
|
|
(OLD[2], 0), (OLD[2], 1), (OLD[4], 0), (OLD[4], 1),
|
|
(OLD[4], 2), (OLD[4], 3), (OLD[4], 4), (OLD[0], 0), (OLD[3], 0),
|
|
]
|
|
ungrouped = [(OLD[2], 2), (OLD[2], 3)]
|
|
ordered = armenia + romania + ungrouped
|
|
assert len(ordered) == len(set(ordered)) == 18
|
|
|
|
anchors = {armenia[0]: "Armenia", romania[0]: "Romania"}
|
|
captions = {(OLD[2], 7): "Transmission of Flesh by Erfan Ashourioun"}
|
|
first_for_job = {}
|
|
for photo in ordered:
|
|
first_for_job.setdefault(photo[0], photo)
|
|
|
|
for job in OLD:
|
|
batch = next(ART.glob(f"*-photo-{job}.md"), None)
|
|
if batch:
|
|
batch.unlink()
|
|
|
|
start = datetime(2026, 9, 19, 12, 29, 33, tzinfo=timezone.utc)
|
|
for position, (job, index) in enumerate(ordered):
|
|
title = f"photo-{job}-{index:02}"
|
|
if (job, index) == first_for_job[job]:
|
|
title = f"photo-{job}"
|
|
date = start - timedelta(microseconds=position)
|
|
lines = ["---", "layout: post", f'title: "{title}"',
|
|
f'date: "{date.isoformat()}"', "categories: art"]
|
|
if (job, index) in anchors:
|
|
lines.append(f'anchor: "{anchors[(job, index)]}"')
|
|
lines.extend(["---", ""])
|
|
if (job, index) == first_for_job[job] and (job, index) not in anchors:
|
|
lines.extend([f'<div id="photo-{job}"></div>', ""])
|
|
caption = captions.get((job, index), "")
|
|
lines.append(f'<p><img src="{UPLOAD}/{job}/{index:02}.jpg" '
|
|
f'alt="{html.escape(caption, quote=True)}" loading="lazy"></p>')
|
|
if caption:
|
|
lines.append(f'<span class="image-details">{html.escape(caption)}</span>')
|
|
target = ART / f"2026-09-19-photo-{job}-{index:02}.md"
|
|
target.write_text("\n".join(lines) + "\n")
|
|
|
|
print("Created 18 individual photo documents in Armenia, Romania, and ungrouped order")
|