125 lines
3.1 KiB
Markdown
125 lines
3.1 KiB
Markdown
# 📚 Bookish
|
|
|
|
**Convertitore e reader di ebook self-hostato** — Flask, Pandoc, WeasyPrint.
|
|
|
|
Carica un ebook in qualsiasi formato, convertilo in un altro, o leggilo direttamente nel browser con un reader completo.
|
|
|
|
---
|
|
|
|
## Funzionalità
|
|
|
|
### 🔄 Convertitore
|
|
| Formato | Input | Output |
|
|
|---------|-------|--------|
|
|
| EPUB | ✅ | ✅ |
|
|
| PDF | ✅ | ✅ |
|
|
| DOCX | ✅ | ✅ |
|
|
| Markdown | ✅ | ✅ |
|
|
| Testo (TXT) | ✅ | ✅ |
|
|
| HTML | ✅ | ✅ |
|
|
| FB2 | ✅ | ✅ |
|
|
| MOBI | ✅ | ❌ |
|
|
| LaTeX | ✅ | ✅ |
|
|
|
|
- Drag & drop upload
|
|
- Barra progresso in tempo reale (SSE)
|
|
- Download automatico del convertito
|
|
|
|
### 📖 Reader
|
|
- **EPUB** via [epub.js](https://github.com/futurepress/epub.js)
|
|
- **PDF** via [pdf.js](https://mozilla.github.io/pdf.js/)
|
|
- **Testo/Markdown/DOCX/FB2/HTML** convertiti e renderizzati
|
|
|
|
Caratteristiche reader:
|
|
- Zoom e regolazione font
|
|
- Temi: chiaro, scuro, seppia
|
|
- Ricerca full-text
|
|
- Indice navigabile
|
|
- Segnalibri e salvataggio posizione
|
|
- Vista singola/doppia pagina
|
|
- Navigazione tastiera
|
|
- Fullscreen
|
|
|
|
### ⚙️ Motore di conversione
|
|
- **Pandoc** come motore primario (decine di formati)
|
|
- **WeasyPrint** per PDF con layout avanzato
|
|
- **python-docx** per DOCX con stili
|
|
- **BeautifulSoup** per post-processing HTML/tabelle
|
|
|
|
---
|
|
|
|
## Requisiti
|
|
|
|
- Python 3.10+
|
|
- Pandoc (incluso via pypandoc-binary)
|
|
- Librerie di sistema per WeasyPrint (libpango, libcairo)
|
|
|
|
## Installazione
|
|
|
|
```bash
|
|
git clone http://192.168.0.183:8085/truetype/bookish.git
|
|
cd bookish
|
|
python3 -m venv .venv
|
|
source .venv/bin/activate
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
## Avvio
|
|
|
|
```bash
|
|
./run.sh
|
|
# oppure su porta specifica:
|
|
./run.sh 8080
|
|
```
|
|
|
|
L'app cerca automaticamente una porta libera a partire da quella specificata.
|
|
|
|
Apri il browser su `http://localhost:5000` (o la porta assegnata).
|
|
|
|
---
|
|
|
|
## Architettura
|
|
|
|
```
|
|
bookish/
|
|
├── app.py # Entry point
|
|
├── config.py # Configurazioni
|
|
├── requirements.txt
|
|
├── run.sh
|
|
├── bookish/
|
|
│ ├── __init__.py # Flask factory
|
|
│ ├── routes/
|
|
│ │ ├── convert.py # Upload, SSE progress, download
|
|
│ │ └── reader.py # Reader view
|
|
│ ├── services/
|
|
│ │ ├── converter.py # Conversione Pandoc + pipeline
|
|
│ │ ├── sse_manager.py # SSE progress manager
|
|
│ │ └── formatter.py # PDF/HTML post-processing
|
|
│ ├── templates/
|
|
│ │ ├── base.html # Layout base
|
|
│ │ ├── index.html # Convertitore
|
|
│ │ └── reader.html # Reader
|
|
│ └── static/
|
|
│ ├── css/style.css
|
|
│ ├── js/main.js # Frontend convertitore
|
|
│ ├── js/reader.js # Frontend reader
|
|
│ └── logo.svg
|
|
├── uploads/ # File caricati (temporanei)
|
|
├── converted/ # File convertiti (temporanei)
|
|
└── docs/ # Documentazione
|
|
```
|
|
|
|
Vedi [docs/architecture.md](docs/architecture.md) per dettagli.
|
|
|
|
---
|
|
|
|
## Deployment
|
|
|
|
Adatto per Proxmox LXC, Docker o VM leggera. Vedi [docs/deploy.md](docs/deploy.md).
|
|
|
|
---
|
|
|
|
## Licenza
|
|
|
|
MIT
|