ledger: stackchain magazine photo catalog extract

This commit is contained in:
ledger committed 2026-10-22 22:18:29 +00:00
1 parent 2613a39256
commit 311aae865f
3 files changed
+138

No files matched your search

+63
View File
@@ -0,0 +1,63 @@
#!/usr/bin/env python3
"""Extract the Stackchain Magazine photo catalog into a normalized table (CSV + JSON).
Source: /root/stackchain_catalog.md (the 'vee-supply-2026-09-21' magazine transcription)
Read the whole file here; the result is evidence, not a claim.
"""
import csv
import json
import os
import re
SRC = "/root/stackchain_catalog.md"
OUT_DIR = "/root/.hermes/wizard-outputs/ledger"
OS = os.path.join(OUT_DIR, "stackchain_catalog.csv")
JS = os.path.join(OUT_DIR, "stackchain_catalog.json")
with open(SRC,encoding="utf-8") as f:
raw = f.read()
# Split into entry blocks on '## N. <filename> — <section>' headers.
entry_re = re.compile(r"^## (\d+)\. (\S+\.\S+) — (.+)$", re.M)
parts = entry_re.split(raw)
# parts: [head, num, fname, title, body, num, fname, title, body, ...]
entries = []
for i in range(1, len(parts), 4):
num = parts[i]
fname = parts[i+1]
title = parts[i+2]
body = parts[i+3]
# Type
m = re.search(r"^\s*-\s*\*\*Type:\*\*\s*(.*)$", body, re.M)
typ = m.group(1).strip() if m else ""
# Text: capture the first fenced code block (the exact transcription)
tm = re.search(r"```(.*?)```", body, re.S)
text_block = tm.group(1) if tm else ""
text_lines = [ln.strip() for ln in text_block.splitlines() if ln.strip()]
text_preview = (text_lines[0][:160] + ("…" if len(text_lines[0]) > 160 else "")) if text_lines else ""
# Identifiers (remainder of the Identifiers line)
im = re.search(r"^\s*-\s*\*\*Identifiers:\*\*\s*(.*)$", body, re.M)
ident = im.group(1).strip() if im else ""
entries.append({
"id": int(num),
"filename": fname,
"section": title.strip(),
"type": typ,
"text_preview": text_preview,
"identifiers": ident,
})
os.makedirs(OUT_DIR, exist_ok=True)
with open(OS, "w", newline="", encoding="utf-8") as f:
w = csv.DictWriter(f, fieldnames=["id","filename","section","type","text_preview","identifiers"])
w.writeheader()
for e in entries:
w.writerow(e)
with open(JS, "w", encoding="utf-8") as f:
json.dump(entries, f, indent=2, ensure_ascii=False)
print("entries:", len(entries))
for e in entries:
print(f"{e['id']:>2} | {e['filename']:<24} | {e['section']:<28} | {e['type']:<28} | {e['text_preview'][:60]!r}")
@@ -0,0 +1,9 @@
id,filename,section,type,text_preview,identifiers
1,img_67eedaf526e7.jpg,COVER,COVER,STACKCHAIN,"Mascot logo (cartoon monkey/chimp, orange bandana, cursive ""stackchain"" wordmark). ""18+"" age badge. Mirrored/reversed text elements on cover (""SELF-CUSTODY//BITCOIN ONLY"", graffiti ""MAGAZINE""). Bylines/author names: MADEX, ISRELI/ISBELL, DENIZ, SKYLER (no @handles). No block-height notation or sat amounts readable."
2,img_fcb2e6a8f066.jpg,PHOTO OF PERSON HOLDING MAGAZINE,PHOTO_OF_PERSON_HOLDING_MAGAZINE,B/H872.372,"Spine call-number label ""B/H872.372"". Cover logo ""MACHINA"". No @handles, avatars, or sats amounts readable."
3,img_72f52468393f.jpg,"PAGE (""58K MEMES"")",PAGE,STACKCHAIN MAGAZINE,"""STACKCHAIN MAGAZINE"" logo; ""@chain""; hashtags #GoPio, #DSB; ""D&B GANG""; ""LBDC STABLECOIN""; ""Lokepetyfork"". Amounts: 58K, 58k, 59k, 100K, 100k, $417.00, $580.00. No block heights visible."
4,img_d5ada9cee4e9.jpg,"PAGE (""GO PIOS"")",PAGE,DS #GOPIOS,"None (no @handles, watermarks, or sats amounts readable)."
5,img_7333a3df0aac.jpg,"PAGE (""MEME MUSEUM"")",PAGE,LOKOPETTYFORK,"""@Lokopettyfork""; ""LokoPettyFork""/""Lokopettyfork""; ""verizon"" logo; ""MSTR"" ticker; Bitcoin logo; ""₿SB"" reference. Amounts: $70,206.87, $10.00, 3,052.52, 3.01%, 58K, 100K, $100, 100, $100.00. **Number ""8722100"" appears (likely a block height, unconfirmed).**"
6,img_05d51da1fd9d.jpg,COVER (Captain's Log 4),COVER,STACKCHAIN,"No @handles or amounts readable. Bitcoin (₿) symbols on gold coin + octopus head. Lower-left logo: cartoon monkey with red bandana + ""MAGAZINE"" beneath. No block-height notation readable."
7,img_125532ea2e01.jpg,COVER,COVER,"B/H: 850,683","**Block height printed on orange band: ""B/H: 850,683""** — historical record. Brand ""STACKCHAIN"" in cover text. No @handles or sat amounts readable; the only numeric identifier is block height 850,683."
8,img_1325775751e6.jpg,"PAGE (""MEME MUSEUM"")",PAGE,[unreadable]CLASSIC,"No @handles visible. **QR code printed on left page edge.** ""Stackchainers"" branding in party meme. Amounts: 1888 (stacked, per caption), 70K, 85.11 (small partially-legible label). No block heights readable."
1 id filename section type text_preview identifiers
2 1 img_67eedaf526e7.jpg COVER COVER STACKCHAIN Mascot logo (cartoon monkey/chimp, orange bandana, cursive "stackchain" wordmark). "18+" age badge. Mirrored/reversed text elements on cover ("SELF-CUSTODY//BITCOIN ONLY", graffiti "MAGAZINE"). Bylines/author names: MADEX, ISRELI/ISBELL, DENIZ, SKYLER (no @handles). No block-height notation or sat amounts readable.
3 2 img_fcb2e6a8f066.jpg PHOTO OF PERSON HOLDING MAGAZINE PHOTO_OF_PERSON_HOLDING_MAGAZINE B/H872.372 Spine call-number label "B/H872.372". Cover logo "MACHINA". No @handles, avatars, or sats amounts readable.
4 3 img_72f52468393f.jpg PAGE ("58K MEMES") PAGE STACKCHAIN MAGAZINE "STACKCHAIN MAGAZINE" logo; "@chain"; hashtags #GoPio, #DSB; "D&B GANG"; "LBDC STABLECOIN"; "Lokepetyfork". Amounts: 58K, 58k, 59k, 100K, 100k, $417.00, $580.00. No block heights visible.
5 4 img_d5ada9cee4e9.jpg PAGE ("GO PIOS") PAGE DS #GOPIOS None (no @handles, watermarks, or sats amounts readable).
6 5 img_7333a3df0aac.jpg PAGE ("MEME MUSEUM") PAGE LOKOPETTYFORK "@Lokopettyfork"; "LokoPettyFork"/"Lokopettyfork"; "verizon" logo; "MSTR" ticker; Bitcoin logo; "₿SB" reference. Amounts: $70,206.87, $10.00, 3,052.52, 3.01%, 58K, 100K, $100, 100, $100.00. **Number "8722100" appears (likely a block height, unconfirmed).**
7 6 img_05d51da1fd9d.jpg COVER (Captain's Log 4) COVER STACKCHAIN No @handles or amounts readable. Bitcoin (₿) symbols on gold coin + octopus head. Lower-left logo: cartoon monkey with red bandana + "MAGAZINE" beneath. No block-height notation readable.
8 7 img_125532ea2e01.jpg COVER COVER B/H: 850,683 **Block height printed on orange band: "B/H: 850,683"** — historical record. Brand "STACKCHAIN" in cover text. No @handles or sat amounts readable; the only numeric identifier is block height 850,683.
9 8 img_1325775751e6.jpg PAGE ("MEME MUSEUM") PAGE [unreadable]CLASSIC No @handles visible. **QR code printed on left page edge.** "Stackchainers" branding in party meme. Amounts: 1888 (stacked, per caption), 70K, 85.11 (small partially-legible label). No block heights readable.
@@ -0,0 +1,66 @@
[
{
"id": 1,
"filename": "img_67eedaf526e7.jpg",
"section": "COVER",
"type": "COVER",
"text_preview": "STACKCHAIN",
"identifiers": "Mascot logo (cartoon monkey/chimp, orange bandana, cursive \"stackchain\" wordmark). \"18+\" age badge. Mirrored/reversed text elements on cover (\"SELF-CUSTODY//BITCOIN ONLY\", graffiti \"MAGAZINE\"). Bylines/author names: MADEX, ISRELI/ISBELL, DENIZ, SKYLER (no @handles). No block-height notation or sat amounts readable."
},
{
"id": 2,
"filename": "img_fcb2e6a8f066.jpg",
"section": "PHOTO OF PERSON HOLDING MAGAZINE",
"type": "PHOTO_OF_PERSON_HOLDING_MAGAZINE",
"text_preview": "B/H872.372",
"identifiers": "Spine call-number label \"B/H872.372\". Cover logo \"MACHINA\". No @handles, avatars, or sats amounts readable."
},
{
"id": 3,
"filename": "img_72f52468393f.jpg",
"section": "PAGE (\"58K MEMES\")",
"type": "PAGE",
"text_preview": "STACKCHAIN MAGAZINE",
"identifiers": "\"STACKCHAIN MAGAZINE\" logo; \"@chain\"; hashtags #GoPio, #DSB; \"D&B GANG\"; \"LBDC STABLECOIN\"; \"Lokepetyfork\". Amounts: 58K, 58k, 59k, 100K, 100k, $417.00, $580.00. No block heights visible."
},
{
"id": 4,
"filename": "img_d5ada9cee4e9.jpg",
"section": "PAGE (\"GO PIOS\")",
"type": "PAGE",
"text_preview": "DS #GOPIOS",
"identifiers": "None (no @handles, watermarks, or sats amounts readable)."
},
{
"id": 5,
"filename": "img_7333a3df0aac.jpg",
"section": "PAGE (\"MEME MUSEUM\")",
"type": "PAGE",
"text_preview": "LOKOPETTYFORK",
"identifiers": "\"@Lokopettyfork\"; \"LokoPettyFork\"/\"Lokopettyfork\"; \"verizon\" logo; \"MSTR\" ticker; Bitcoin logo; \"₿SB\" reference. Amounts: $70,206.87, $10.00, 3,052.52, 3.01%, 58K, 100K, $100, 100, $100.00. **Number \"8722100\" appears (likely a block height, unconfirmed).**"
},
{
"id": 6,
"filename": "img_05d51da1fd9d.jpg",
"section": "COVER (Captain's Log 4)",
"type": "COVER",
"text_preview": "STACKCHAIN",
"identifiers": "No @handles or amounts readable. Bitcoin (₿) symbols on gold coin + octopus head. Lower-left logo: cartoon monkey with red bandana + \"MAGAZINE\" beneath. No block-height notation readable."
},
{
"id": 7,
"filename": "img_125532ea2e01.jpg",
"section": "COVER",
"type": "COVER",
"text_preview": "B/H: 850,683",
"identifiers": "**Block height printed on orange band: \"B/H: 850,683\"** — historical record. Brand \"STACKCHAIN\" in cover text. No @handles or sat amounts readable; the only numeric identifier is block height 850,683."
},
{
"id": 8,
"filename": "img_1325775751e6.jpg",
"section": "PAGE (\"MEME MUSEUM\")",
"type": "PAGE",
"text_preview": "[unreadable]CLASSIC",
"identifiers": "No @handles visible. **QR code printed on left page edge.** \"Stackchainers\" branding in party meme. Amounts: 1888 (stacked, per caption), 70K, 85.11 (small partially-legible label). No block heights readable."
}
]