Skip to content

intelink/biblindex-ro

Repository files navigation

Biblindex RO

Client local pentru biblindex.orgIndex of Biblical Quotations in Early Christian Literature (HiSoMA / Sources Chrétiennes, Lyon). UI în limba română, caută citările patristice ale unui verset biblic, îmbogățește rezultatele cu link-uri directe la TLG_UC, Sources Chrétiennes, Migne PG, Patrologia Latina și fallback Archive.org.

Proiect neoficial, fără afiliere cu BiblIndex. Pentru date oficiale și export bulk: biblindex@mom.fr.

Stack

  • FastAPI + Jinja2 — backend + UI
  • Playwright (Chromium) — drives formularul Symfony de pe biblindex.org (nu există API public)
  • SQLite — cache rezultate (TTL 30 zile) + index local pentru cele 4 colecții externe
  • Cookie importcf_clearance + PHPSESSID din browser real (Cloudflare Turnstile interactiv)

Funcționalități

Pentru fiecare citare BiblIndex, sistemul atașează automat
📄 TLG_UC match autor + lucrare în 1467 PDF-uri grecești (126 autori)
📜 Sources Chrétiennes match SC NNN [bis/ter] în 555 PDF-uri
📚 Migne PG match PG NN în 169 volume (text HTML + scanuri JPG)
📕 Patrologia Latina match PL NN în 131 volume PDF OCR
🌐 Archive.org fallback când nimic local; folosește Advanced Search API
🔎 Clavis link-uri către Clavis Clavium, FourthCentury, TLG Canon, Wikipedia

Plus: 76 cărți biblice mapate RO → variante BiblIndex (Vulgate-style); alias-uri RO → latină pentru autori (Ioan Hrisostom → John Chrysostom etc.); pagină /cookies pentru reîmprospătare automată sesiune când expiră Cloudflare.

Instalare

git clone https://github.com/intelink/biblindex-ro.git ~/Documents/biblindex
cd ~/Documents/biblindex

python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
playwright install chromium

cp .env.example .env
$EDITOR .env   # pune BIBLINDEX_USER + BIBLINDEX_PASS

# index local pentru cele 4 colecții externe (~5 minute)
python dalvalem.py refresh
python migne.py refresh

Bootstrap cookies (o dată)

biblindex.org folosește Cloudflare Turnstile interactiv care nu poate fi trecut de Playwright. Soluție:

  1. Pe laptopul tău, browser normal (Chrome/FF), te loghezi pe biblindex.org → bifezi Cloudflare → te loghezi.
  2. F12 → Application → Cookies → www.biblindex.org → copiezi valorile pentru cf_clearance (.biblindex.org) și PHPSESSID.
  3. Pe server, accesezi http://<server>:8920/cookies → lipești în formular → Salvează.

Cookies-urile expiră periodic (cf_clearance ~ore, PHPSESSID ~zile); reia pașii când primești HTTP 502 pe căutare.

Pornire

# Manual
uvicorn server:app --host 0.0.0.0 --port 8920

# sau ca serviciu systemd (autostart la boot)
sudo cp biblindex.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now biblindex

UI: http://localhost:8920 · Cookies: http://localhost:8920/cookies · Diagnostic: http://localhost:8920/diag

API REST

Endpoint Descriere
GET / UI în română
GET /q?carte=&cap=&v=&v2=&autor= Caută citări (cache 30 zile)
GET /carti Lista celor 76 cărți biblice
GET /healthz Status serviciu
GET /diag Stare sesiune Playwright
GET /diag/screenshot Screenshot ultima eroare
GET /dalvalem/stats Cifre globale colecții indexate
GET /migne/pg?vol=11-17 Linkuri PG range
GET /migne/pl?vol=32 Link PL volum
GET /sc?vol=132 Link Sources Chrétiennes
GET /archive?autor=&lucrare= Căutare directă archive.org
POST /cookies/import Reîmprospătare sesiune

Exemplu:

curl 'http://localhost:8920/q?carte=Ioan&cap=1&v=1' | jq '.total'
# 250

Note tehnice

  • Formularul biblindex.org este la /en/quotations/search (Symfony, secvențe dinamice + selecte cascadate AJAX). Codul forțează bible=Vulgate (id=2) pentru bookGroup uniform: Pentateuch / Prophetic Books / Other writings / Deuterocanonical books / New Testament.
  • Coloanele rezultatului: col1 = referință biblică, col2 = autor, col3 = lucrare (cu prefix numeric), col4 = ediție critică, col5 = referință în operă, col6 = tip (citation/allusion).
  • Optimizare: după submit, se rescrie URL-ul cu limit=200 (default 50) ca să avem 4× mai puține pagini; default max 5 pagini = 1000 rezultate (configurabil cu BIBLINDEX_MAX_PAGES).
  • .env NU acceptă inline-comments după = (limitare systemd EnvironmentFile).
  • Rate-limit voluntar 4s/cerere (configurabil cu BIBLINDEX_RATE_LIMIT_SEC) — bază academică gestionată manual.

Structura proiectului

biblindex/
├── biblindex_lib.py    # client Playwright (login + search + cache)
├── books.py            # 76 cărți RO → variante BiblIndex + book_group()
├── dalvalem.py         # crawler + lookup TLG_UC
├── migne.py            # crawler + lookup PG/PL/SC
├── archive_org.py      # wrapper Archive.org Search API
├── enrich.py           # combină BiblIndex + toate sursele locale + Archive
├── import_cookies.py   # CLI pentru import sesiune
├── server.py           # FastAPI cu UI RO
├── login_vnc.py        # helper pentru login interactiv via VNC
├── login_rdp.sh        # helper pentru login din sesiune RDP
├── templates/
│   ├── index.html      # UI principal
│   └── cookies.html    # UI reîmprospătare sesiune
├── static/style.css
├── biblindex.service   # unit systemd
├── requirements.txt
└── .env.example

Licență

MIT — vezi LICENSE.

About

Index patristic biblic — UI in romana pentru biblindex.org cu link-uri TLG_UC + Sources Chretiennes + Migne PG/PL + Archive.org

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors