Python + Textual, unter tui/. Liest EPUBs aus einem Bibliotheksordner, zeigt Kapitel als Fließtext, j/k/Pfeiltasten zum Scrollen, n/p für Kapitelwechsel. Fortschritt wird lokal (progress.json via platformdirs) nach demselben "furthest wins"-Prinzip wie diora's Web-Reader gespeichert, damit ein Sync-Layer gegen die künftige diora-API später ohne Rewrite andocken kann. Vorerst rein lokal, kein Server-Kontakt, keine Verschlüsselung.
40 lines
1.5 KiB
Markdown
40 lines
1.5 KiB
Markdown
# diora-tui
|
|
|
|
Lokaler EPUB-Reader im Terminal — die erste Stufe einer TUI-Version von diora.
|
|
|
|
Läuft komplett offline gegen eine lokale Bibliothek aus `.epub`-Dateien und merkt sich
|
|
den Lesefortschritt pro Buch (`progress.json` im plattformüblichen Datenverzeichnis,
|
|
z.B. `~/.local/share/diora-tui/` unter Linux, via `platformdirs`). Der Fortschritt wird
|
|
— genau wie im Web-Reader von diora (siehe `books/models.py`, `save_progress`) — nur
|
|
vorwärts überschrieben ("furthest wins"), damit ein älterer/gestaffelter Lauf nie eine
|
|
bereits weiter gelesene Position zurücksetzt.
|
|
|
|
Sobald die diora-Sync-API für E-Book-Fortschritt steht, bekommt dieses Tool einen
|
|
Sync-Layer, der `progress.json` gegen den Server abgleicht. Bis dahin ist alles rein
|
|
lokal — keine Verschlüsselung, kein Server-Kontakt, keine Kenntnis von diora-Accounts.
|
|
|
|
## Setup
|
|
|
|
```bash
|
|
cd tui
|
|
pip install -e .
|
|
```
|
|
|
|
## Nutzung
|
|
|
|
```bash
|
|
diora-tui --library ~/Books # Standard: ~/Books
|
|
```
|
|
|
|
Tastenkürzel:
|
|
|
|
- `↑`/`k`, `↓`/`j` — zeilenweise scrollen
|
|
- `n` / `]` — nächstes Kapitel, `p` / `[` — vorheriges Kapitel
|
|
- `Enter` — markiertes Buch aus der Bibliothek öffnen
|
|
- `Escape` / `q` — zurück zur Bibliothek (im Reader) bzw. beenden (in der Bibliothek)
|
|
|
|
## Grenzen der aktuellen Version
|
|
|
|
- Nur EPUB, kein PDF (diora selbst unterstützt beides).
|
|
- Text wird pro Kapitel als Fließtext ohne Bild-/Layout-Rendering dargestellt.
|
|
- Fortschritt ist rein lokal; es gibt noch keinen Login/Sync gegen eine diora-Instanz.
|