sites/tobias.raayoni-last.com/pelicanconf.py
randogoth 4efe975599 fix: recover one hotlinked image, retire the other eleven
Twelve images across seven articles were hotlinked from servers that no longer
exist, so they were broken on the live sites. Checked every one against the
Wayback Machine, patiently enough to trust the answer: an earlier pass appeared
to find seven, but that was a test treating an empty response as a hit.

One survives. visualberlin.org's p1010789, a 2011 capture of the projector set
up against Mannheim city hall during the Flimmerkiste wildscreening, is now a
local asset in flux.vision/content/library/ and the reference points at it.

The other eleven were never captured. Both dead domains are archived, so this is
not a gap in coverage: of 8,438 visualberlin.org URLs and 204 for mutanten.org,
only that one image is there. mutanten.org's archive does not reach back to its
fp-content era at all, which is where the Logan's Run stills lived.

So lostimages.py learns about dead hosts, which it matches rather than fetching,
because a build must not depend on the network and a dead host is a fact about
the world rather than about the document. The references stay in the Markdown,
as the existing ones do: the reference records what was there.

It matters more on the capsule than on the web. A browser shows a broken image
as a silent gap, but gemtext has no inline images, so every one becomes a
visible => link line and the page would advertise a dead host as somewhere worth
going. smolnet.py therefore strips them too, reading the same host list, since
it works on the Markdown source and never sees Pelican's output.

lostimages.py moves to the repo-level plugins/ directory beside smolnet. It was
shared already, with flux.vision reaching into tobias.raayoni-last.com for it,
and randogoth.com now needs it too; a shared plugin living inside one site was
the wrong shape for three consumers.

Left alone deliberately: the two mutanten.org links in mutantenkino-website.md.
That entry is about having built the site, so the link is its subject rather
than decoration, and a dead link does not make the record wrong.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-10-06 11:04:28 +03:00

74 lines
2.3 KiB
Python

AUTHOR = 'Tobias Raayoni Last'
SITENAME = 'Tobias Raayoni Last'
SITEURL = ''
PATH = 'content'
TIMEZONE = 'Asia/Jerusalem'
DEFAULT_LANG = 'en'
THEME = 'raayoni'
PLUGIN_PATHS = ['plugins', '../plugins']
PLUGINS = ['assetcheck', 'lostimages']
# Dark is the register this work belongs to, so it is the default rather than
# following the system. An explicit toggle (persisted in localStorage) wins.
THEME_DEFAULT = 'dark'
# Articles live flat in content/; pages and assets are carved out of that.
ARTICLE_PATHS = ['']
ARTICLE_EXCLUDES = ['pages', 'library', 'images']
PAGE_PATHS = ['pages']
STATIC_PATHS = ['library', 'images']
# URLs no longer embed the category: the discipline taxonomy was reworked once
# already and every reassignment moved a URL. Slugs are stable, categories are not.
ARTICLE_URL = '{slug}.html'
ARTICLE_SAVE_AS = '{slug}.html'
PAGE_URL = '{slug}.html'
PAGE_SAVE_AS = '{slug}.html'
CATEGORY_URL = 'discipline/{slug}.html'
CATEGORY_SAVE_AS = 'discipline/{slug}.html'
CATEGORIES_SAVE_AS = 'disciplines.html'
TAG_URL = 'tag/{slug}.html'
TAG_SAVE_AS = 'tag/{slug}.html'
TAGS_SAVE_AS = 'tags.html'
ARCHIVES_SAVE_AS = 'timeline.html'
AUTHOR_SAVE_AS = ''
AUTHORS_SAVE_AS = ''
DRAFT_URL = 'draft/{slug}.html'
DRAFT_SAVE_AS = 'draft/{slug}.html'
# Grid tiles need a one-line description. Most entries have no Summary, so
# Pelican derives one from the body; the median entry is 34 words, so this is
# a first clause rather than an excerpt.
SUMMARY_MAX_LENGTH = 18
# The index is a single Muuri grid over everything; paginating it would break
# client-side filtering and sorting.
DEFAULT_PAGINATION = False
MENUITEMS = [
('about', '/about.html'),
('timeline', '/timeline.html'),
('disciplines', '/disciplines.html'),
('bio', '/bio.html'),
('connect', '/connect.html'),
]
# No nl2br. The recovered bodies are hard wrapped at roughly 70 characters, so
# it turned every source line into a forced break: 67 of 69 multi-line articles
# were affected and the About page carried twelve, each one mid-sentence.
MARKDOWN = {
'extension_configs': {
'markdown.extensions.tables': {},
'markdown.extensions.footnotes': {},
},
'output_format': 'html5',
}
FEED_ALL_ATOM = None
CATEGORY_FEED_ATOM = None
TRANSLATION_FEED_ATOM = None
AUTHOR_FEED_ATOM = None
AUTHOR_FEED_RSS = None
DELETE_OUTPUT_DIRECTORY = True
CACHE_CONTENT = False