106 lines
3.5 KiB
Markdown
106 lines
3.5 KiB
Markdown
# harbour-calibreweb
|
|
|
|
**OPDS** client for Sailfish OS: browse and download books from your
|
|
**Calibre Web** instance (or Calibre's Content Server).
|
|
|
|
Works with any OPDS server, but is designed for Calibre Web:
|
|
navigation feeds, search, covers, downloads with progress.
|
|
|
|
## Why OPDS instead of the REST API
|
|
|
|
Recent calibre-web releases (upstream) **no longer ship the REST API**:
|
|
`/api/*` was removed and does not exist in any 0.6.9+ release nor in master.
|
|
The stable, documented interface is **OPDS** (`/opds`, `/opds/new`,
|
|
`/opds/search?query=...`), which uses HTTP Basic Auth and exposes
|
|
per-format download links. OPDS is also supported by Calibre's Content
|
|
Server, so this app covers both backends.
|
|
|
|
## Features
|
|
|
|
- Catalog sections (new arrivals, authors, categories, shelves, ...) from the `/opds` index
|
|
- Automatic pagination (`rel="next"` links)
|
|
- Text search (`/opds/search`)
|
|
- Covers with local cache
|
|
- Book detail: author, description, formats with size
|
|
- Download with progress bar to `~/Downloads`
|
|
- HTTP Basic Auth (empty user = anonymous browsing)
|
|
- "Ignore SSL errors" option for self-signed certificates
|
|
|
|
## Build
|
|
|
|
You need the [Sailfish SDK](https://sailfishos.org/wiki/Sailfish_SDK)
|
|
(on Linux: `flatpak install flathub org.sailfishos.sdk` or the tarball).
|
|
|
|
```sh
|
|
git clone <this repo> harbour-calibreweb
|
|
cd harbour-calibreweb
|
|
|
|
# pick a target, e.g.:
|
|
sfdk target install SailfishOS-4.6.0.11-armv7hl
|
|
sfdk target use SailfishOS-4.6.0.11-armv7hl
|
|
|
|
sfdk build # produces the RPM in RPMS/
|
|
sfdk deploy # installs on the connected device
|
|
```
|
|
|
|
Alternatively, install the RPM manually:
|
|
|
|
```sh
|
|
pkcon install-local harbour-calibreweb-0.1.0-1.armv7hl.rpm
|
|
```
|
|
|
|
Recommended targets by device: `armv7hl` (Xperia X, Jolla C...),
|
|
`aarch64` (Xperia 10 II/III, Jolla C2), `x86_64` (emulator).
|
|
For the **Jolla Phone 2026** (MediaTek Dimensity, jp2601): `aarch64` with
|
|
Sailfish OS 5.0, e.g. `SailfishOS-5.0.0.62-aarch64` (or the latest 5.0.x
|
|
available in your SDK version).
|
|
|
|
## Configuration
|
|
|
|
Open the app → menu → **Settings**:
|
|
|
|
| Field | Value |
|
|
|---|---|
|
|
| Calibre Web address | e.g. `https://calibre.example.com` (subpath supported) |
|
|
| User | leave empty if anonymous browsing is enabled on calibre-web |
|
|
| Password | your account password (Basic Auth) |
|
|
| Ignore SSL | enable only if the server uses a self-signed certificate |
|
|
|
|
Then hit **Test connection** and browse.
|
|
|
|
## Structure
|
|
|
|
```
|
|
src/ C++: settings (QSettings), apiclient (feeds+covers),
|
|
downloader (progress), opdsparser (Atom/OPDS), main
|
|
qml/pages/ MainPage (index), FeedPage (lists+pagination),
|
|
BookDetailPage (detail+download), SearchPage, SettingsPage
|
|
qml/cover/ app cover
|
|
icons/ 86/108 px icons + generation script
|
|
rpm/ spec and desktop file
|
|
```
|
|
|
|
## Known limitations
|
|
|
|
- The password is stored in plain text in the app settings
|
|
(`/home/nemo/.config/harbour/calibreweb.conf`) — acceptable for personal
|
|
use. The file is fixed and shared between the launcher (nemo) and SSH
|
|
debug (defaultuser): the config does not depend on which user launches
|
|
the app.
|
|
- Search uses the server's engine; results are identical to the web UI.
|
|
- The C++ core (parsing, auth, download) is tested with Qt 5.15 against
|
|
real OPDS feeds and a Basic Auth mock; the Silica UI requires the SDK
|
|
for on-device verification.
|
|
|
|
## Core tests
|
|
|
|
```sh
|
|
# mock OPDS server + end-to-end test (see local /tmp repo):
|
|
python3 /tmp/mock_opds.py
|
|
# compile and run /tmp/opds_test (Qt 5.15+)
|
|
```
|
|
|
|
## License
|
|
|
|
MIT
|