# harbour-calibreweb Client **OPDS** per Sailfish OS: naviga e scarica libri dalla tua istanza **Calibre Web** (o dal Content Server di Calibre). Funziona con qualsiasi server OPDS, ma è pensato per Calibre Web: feed di navigazione, ricerca, copertine, download con progresso. ## Perché OPDS e non l'API REST Le versioni recenti di calibre-web (upstream) **non hanno più l'API REST**: `/api/*` è stata rimossa e non esiste in nessuna release 0.6.9+ né in master. L'interfaccia stabile e documentata è **OPDS** (`/opds`, `/opds/new`, `/opds/search?query=...`), che usa HTTP Basic Auth ed espone i link di download per formato. OPDS è supportato anche dal Content Server di Calibre, quindi questa app copre entrambi i backend. ## Funzionalità - Sezioni del catalogo (novità, autori, categorie, scaffali, ...) dall'indice `/opds` - Paginazione automatica (link `rel="next"`) - Ricerca testuale (`/opds/search`) - Copertine con cache locale - Dettaglio libro: autore, descrizione, formati con dimensione - Download con barra di progresso in `~/Downloads` - Autenticazione HTTP Basic (utente vuoto = browse anonimo) - Opzione "ignora errori SSL" per certificati autofirmati ## Build Serve il [Sailfish SDK](https://sailfishos.org/wiki/Sailfish_SDK) (su Linux: `flatpak install flathub org.sailfishos.sdk` o tarball). ```sh git clone harbour-calibreweb cd harbour-calibreweb # scegli un target, es.: sfdk target install SailfishOS-4.6.0.11-armv7hl sfdk target use SailfishOS-4.6.0.11-armv7hl sfdk build # produce l'RPM in RPMS/ sfdk deploy # installa sul dispositivo connesso ``` In alternativa, installa l'RPM a mano: ```sh pkcon install-local harbour-calibreweb-0.1.0-1.armv7hl.rpm ``` Target consigliati in base al dispositivo: `armv7hl` (Xperia X, Jolla C…), `aarch64` (Xperia 10 II/III, Jolla C2), `x86_64` (emulatore). Per il **Jolla Phone 2026** (MediaTek Dimensity, jp2601): `aarch64` con Sailfish OS 5.0, es. `SailfishOS-5.0.0.62-aarch64` (o l'ultimo 5.0.x disponibile nella tua versione dell'SDK). ## Configurazione Apri l'app → menù → **Impostazioni**: | Campo | Valore | |---|---| | Indirizzo Calibre Web | es. `https://calibre.example.com` (o con sottopath) | | Utente | vuoto se il browse anonimo è attivo su calibre-web | | Password | quella dell'account (Basic Auth) | | Ignora SSL | attivalo solo se il server ha un certificato autofirmato | Poi **Prova connessione** e naviga. ## Struttura ``` src/ C++: settings (QSettings), apiclient (feed+copertine), downloader (progressi), opdsparser (Atom/OPDS), main qml/pages/ MainPage (indice), FeedPage (liste+paginazione), BookDetailPage (dettaglio+download), SearchPage, SettingsPage qml/cover/ cover dell'app icons/ icone 86/108 px + script di generazione rpm/ spec e desktop file ``` ## Limiti noti - La password è salvata in chiaro nelle impostazioni dell'app (`/home/nemo/.config/harbour/calibreweb.conf`) — accettabile per uso personale. Il file è fisso e condiviso tra launcher (nemo) e debug SSH (defaultuser): la config non dipende dall'utente che avvia l'app. - La ricerca usa il motore del server; risultati identici alla UI web. - Il core C++ (parsing, auth, download) è testato con Qt 5.15 contro feed OPDS reali e un mock con Basic Auth; la UI Silica richiede il SDK per la verifica su dispositivo. ## Test del core ```sh # mock server OPDS + test end-to-end (vedi repository /tmp in locale): python3 /tmp/mock_opds.py # compila e lancia /tmp/opds_test (Qt 5.15+) ``` ## Licenza MIT