Keep legacy photo highlights contiguous

This commit is contained in:
2026-09-19 18:20:46 +03:30
parent f6cb9573a7
commit 2b90dccd83
31 changed files with 118 additions and 30 deletions
+53 -1
View File
@@ -2,6 +2,8 @@
from datetime import datetime, timedelta, timezone
from pathlib import Path
import html
import json
import re
ART = Path("_art")
@@ -26,6 +28,40 @@ ungrouped = [(OLD[2], 2), (OLD[2], 3)]
ordered = armenia + romania + ungrouped
assert len(ordered) == len(set(ordered)) == 18
collection_groups = [
(
"iran-analog-2024",
datetime(2024, 10, 25, 23, 59, 59, tzinfo=timezone.utc),
"Iran - Hamadan, Kermanshah, Tabriz",
[
"Taq-e-Bostan_000521270020.jpg", "Taq-e-Bostan_000521270019.jpg",
"Taq-e-Bostan_000521270018.jpg", "Tabriz_000521270013.jpg",
"Tabriz_000521270012.jpg", "Iran_000521270023.jpg",
"Iran_000521270021.jpg", "Hamadan_000521270035.jpg",
"Hamadan_000521270034.jpg", "Hamadan_000521270033.jpg",
"Hamadan_000521270032.jpg", "Hamadan_000521270031.jpg",
"Ganjname,-Hamadan_000521270029.jpg", "Cowboy-from-Hamadan_000521270030.jpg",
"Bistoon_000521270027.jpg", "Bistoon_000521270026.jpg",
"Bistoon_000521270025.jpg", "Bazaar-e-Tabriz_000521270010.jpg",
"Bazaar-e-Tabriz_000521270009.jpg", "Bazaar-e-Tabriz_000521270008.jpg",
],
),
(
"kazakhstan-2024",
datetime(2024, 10, 9, 23, 59, 59, tzinfo=timezone.utc),
"Kazakhstan - World Nomad Games",
[
"x_DSC-0999.jpg", "x_DSC-0994.jpg",
"World-Nomad-Games,-Kazakhstan_DSC-0685.jpg",
"World-Nomad-Games,-Kazakhstan_DSC-0536.jpg",
"World-Nomad-Games,-Kazakhstan_DSC-0472.jpg",
"World-Nomad-Games,-Kazakhstan_DSC-0298.jpg",
"World-Nomad-Games,-Kazakhstan_DSC-0251.jpg",
"Kazakhstan_DSC-0870.jpg", "Kazakhstan_DSC-0865.jpg",
],
),
]
anchors = {armenia[0]: "Armenia", romania[0]: "Romania"}
captions = {(OLD[2], 7): "Transmission of Flesh by Erfan Ashourioun"}
first_for_job = {}
@@ -58,4 +94,20 @@ for position, (job, index) in enumerate(ordered):
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")
for folder, group_start, anchor, filenames in collection_groups:
for position, filename in enumerate(filenames):
image = f"/img/arts/{folder}/{filename}"
matches = [path for path in ART.glob("*.md") if image in path.read_text()]
assert len(matches) == 1, (image, matches)
path = matches[0]
content = path.read_text()
date = group_start - timedelta(seconds=position)
content = re.sub(r"^date:.*$", f'date: "{date.isoformat()}"', content,
count=1, flags=re.MULTILINE)
content = re.sub(r"^anchor:.*\n", "", content, flags=re.MULTILINE)
if position == 0:
content = content.replace("categories: art\n", "categories: art\nanchor: " +
json.dumps(anchor) + "\n", 1)
path.write_text(content)
print("Organized Armenia, Romania, Iran, and Kazakhstan into contiguous highlights")
+36
View File
@@ -14,6 +14,29 @@ ROMANIA = [f"/img/arts/uploads/{JOB}/{index:02}.jpg" for index in (0, 1)] + [
for index in range(5)] + [
"/img/arts/uploads/260cc99527c13f256d4ea39d0959f5daa942c888ea882852e73fd94f6c30b7db/00.jpg",
"/img/arts/uploads/b18a2f1c7127077c801160782012cb164759f0b9dd41762205b45e4c9a07d673/00.jpg"]
COLLECTIONS = {
"iran-analog-2024": [
"Taq-e-Bostan_000521270020.jpg", "Taq-e-Bostan_000521270019.jpg",
"Taq-e-Bostan_000521270018.jpg", "Tabriz_000521270013.jpg",
"Tabriz_000521270012.jpg", "Iran_000521270023.jpg",
"Iran_000521270021.jpg", "Hamadan_000521270035.jpg",
"Hamadan_000521270034.jpg", "Hamadan_000521270033.jpg",
"Hamadan_000521270032.jpg", "Hamadan_000521270031.jpg",
"Ganjname,-Hamadan_000521270029.jpg", "Cowboy-from-Hamadan_000521270030.jpg",
"Bistoon_000521270027.jpg", "Bistoon_000521270026.jpg",
"Bistoon_000521270025.jpg", "Bazaar-e-Tabriz_000521270010.jpg",
"Bazaar-e-Tabriz_000521270009.jpg", "Bazaar-e-Tabriz_000521270008.jpg",
],
"kazakhstan-2024": [
"x_DSC-0999.jpg", "x_DSC-0994.jpg",
"World-Nomad-Games,-Kazakhstan_DSC-0685.jpg",
"World-Nomad-Games,-Kazakhstan_DSC-0536.jpg",
"World-Nomad-Games,-Kazakhstan_DSC-0472.jpg",
"World-Nomad-Games,-Kazakhstan_DSC-0298.jpg",
"World-Nomad-Games,-Kazakhstan_DSC-0251.jpg",
"Kazakhstan_DSC-0870.jpg", "Kazakhstan_DSC-0865.jpg",
],
}
class PhotoHighlightTests(unittest.TestCase):
@@ -40,6 +63,19 @@ class PhotoHighlightTests(unittest.TestCase):
self.assertIn('anchor: "Iran - Hamadan, Kermanshah, Tabriz"', iran)
self.assertIn('anchor: "Kazakhstan - World Nomad Games"', kazakhstan)
def test_existing_collection_order_uses_distinct_seconds(self):
for folder, filenames in COLLECTIONS.items():
records = []
for path in ART.glob("*.md"):
content = path.read_text()
image = re.search(rf'/img/arts/{folder}/([^\s)"\']+)', content)
if image:
date = re.search(r'^date: "([^"]+)"', content, re.MULTILINE)
records.append((datetime.fromisoformat(date.group(1)), image.group(1)))
records.sort(reverse=True)
self.assertEqual([filename for _, filename in records], filenames)
self.assertEqual(len({date for date, _ in records}), len(filenames))
if __name__ == "__main__":
unittest.main()