An IPFS library of PDFs made with LaTeX with minimal grammatical errors.
In the spirit of inspiration, we pay homage to the nine Muses of Greek mythology, who guide our creativity and knowledge. Their whispers fuel our passion for the arts and sciences, reminding us of the beauty of expression and the pursuit of wisdom.
"Sing, O Muse, of the wonders of the past, of the Library of Alexandria, where knowledge flowed like the Nile, and the light of learning shone bright."
This repository powers solaranamnesis.pub, a multilingual digital library of public-domain texts typeset in LaTeX and distributed as PDFs via IPFS. The site presents books in over 30 languages, each with its own localized sub-directory and a corresponding {lang}/books.json data file that drives the book catalogue.
Key files and directories:
| File / Directory | Description |
|---|---|
books.json |
Master English book catalogue (source of truth) |
translations.json |
Dictionary of all field translations and year-calendar offsets, keyed by BCP-47 language code |
generate_books.py |
Python script that reads books.json + translations.json and regenerates all {lang}/books.json files |
index.html |
English front-end page (root) |
script.js |
English JavaScript that fetches books.json and renders the book list |
timeline.html |
English interactive D3.js timeline viewer (publication years 1600–2022) |
shelf-data/ |
English shelf and markdown-viewer templates |
{lang}/ |
Per-language sub-directory (e.g. fr/, zh/, ar/) |
{lang}/index.html |
Language-specific front-end page |
{lang}/script.js |
Per-language JavaScript that fetches {lang}/books.json and renders the book list |
{lang}/books.json |
Auto-generated per-language catalogue |
{lang}/links.html |
Per-language links page |
{lang}/timeline.html |
Per-language interactive D3.js timeline viewer (publication years 1600–2022) |
{lang}/shelf-data/ |
Per-language shelf and markdown-viewer templates |
index-{lang}.html |
Redirect stub → {lang}/index.html (backwards compatibility) |
links-{lang}.html |
Redirect stub → {lang}/links.html (backwards compatibility) |
md-viewer-{lang}.html |
Redirect stub → {lang}/shelf-data/md-viewer.html (backwards compatibility) |
generate_books.py is the script used to regenerate every localized {lang}/books.json catalogue from the single master books.json and the translations.json dictionary.
For each book entry the script translates (or converts) the following fields:
| Field | How it is handled |
|---|---|
languages |
Comma-separated language names — each term is looked up in translations["languages"] |
subjects |
Comma-separated subject keywords — each term is looked up in translations["subjects"] |
collections |
Semicolon-separated collection names — each term is looked up in translations["collections"] |
thumbs[].label |
PDF-variant labels — custom design names are looked up in translations["labels"] |
footer[].text |
Footer link labels — looked up in translations["footer"] |
footer[].link |
Links to md-viewer.html are rewritten to {lang}/shelf-data/md-viewer.html |
year |
Leading integer is offset using translations["year_conversion"] (keys: offset, prefix, suffix) to convert CE years to native calendars (e.g. Buddhist Era, Hebrew calendar) |
author |
Translated via the translations["authors"] mapping when present |
All other fields (id, title, image, shelfFile, thumbs[].class, thumbs[].pdfUrl, footer[].link for non-viewer links) are copied unchanged from books.json.
Python 3.6+ — no third-party packages required.
python3 generate_books.py [options]
| Option | Default | Description |
|---|---|---|
--base FILE |
books.json |
Base English JSON file to read |
--translations FILE |
translations.json |
Translations dictionary file |
--output-dir DIR |
. (current directory) |
Root directory; each language writes to {DIR}/{lang}/books.json |
--languages LANG … |
(all in translations.json) | Generate only the specified language codes |
--no-english |
(off) | Skip writing the English books.json output |
Regenerate all languages (typical workflow):
python3 generate_books.pyRegenerate only a subset of languages:
python3 generate_books.py --languages zh ar fr deUse custom input files and write output to a different directory:
python3 generate_books.py --base books.json --translations translations.json --output-dir ./outputRegenerate translated files only, skipping the English copy:
python3 generate_books.py --no-englishRegenerate a single language for quick testing:
python3 generate_books.py --languages jaEach language edition includes a timeline.html page that renders an interactive D3.js timeline of the book catalogue. Books span publication years 1600–2022.
- The root
timeline.htmlis the English version; each{lang}/timeline.htmlis a localized copy with translated UI strings. - The D3.js script is embedded inline; no separate build step is required.
- To update the year range across all timeline files at once:
find . -name "timeline.html" -exec sed -i 's/OLD_YEAR/NEW_YEAR/g' {} \;Solar Anamnesis Publishing --- English
Spanish
German
French
Japanese (日本語)
Italian
Russian (Русский)
Chinese (中文)
Hebrew (עברית)
Thai (ไทย)
Vietnamese (Tiếng Việt)
Arabic (العربية)
Hindi (हिन्दी)
Greek (Ελληνικά)
Korean (한국어)
Portuguese
Bengali (বাংলা)
Punjabi (ਪੰਜਾਬੀ)
Persian (فارسی)
Kiswahili
Bahasa Indonesia
Język Polski
Nederlands
Svenska
Turkish (Türkçe)
Magyar
Nepal Bhasa (𑐣𑐾𑐥𑐵𑐮 𑐨𑐵𑐲𑐵)
Lhasa Tibetan (ལྷ་སའི་སྐད་)
Sinhala (සිංහල)
Tamil (தமிழ்)
Odia (ଓଡ଼ିଆ)
Armenian (Հայերեն)
Tagalog
Amharic (አማርኛ)
Gujarati (ગુજરાતી)
Hausa
Javanese (Basa Jawa)
Georgian (ქართული)
Kannada (ಕನ್ನಡ)
Marathi (मराठी)
Telugu (తెలుగు)
Urdu (اردو)
Yoruba (Yorùbá)
Latina
Euskara
Suomi (Finnish)
Mongol (Mongolian)
Татарча (Tatar)
Қазақша
Кыргызча
Česky
Українська (Ukrainian)
Română
Kurdî (Kurmancî)
മലയാളം
Српски (Serbian)
Bosanski
Hrvatski
پښتو (Pashto)
Igbo
Afrikaans
Català
Български
မြန်မာ
Af Soomaali
isiZulu
Kreyòl ayisyen
Dansk
Norsk (Bokmål)
Azərbaycan dili
Malagasy
Runa Simi
Lëtzebuergesch | Gaeilge | Cymraeg
Esperanto | Interlingua
IPFS Mirror:
IPNS hash k51qzi5uqu5dhxjrhpv3w4j0vpwai82jxdgel8kefwf0jzm1l14ow991qo5aga