добавлен готовый плагин BookfusionBackSync

This commit is contained in:
Dmitriy Kazimirov 2026-04-26 14:41:21 +06:00
parent dff3c3bc28
commit b7d1a910e7
4 changed files with 74 additions and 10 deletions

BIN
BookfusionBackSync.zip Normal file

Binary file not shown.

View file

@ -37,10 +37,7 @@ Calibre-плагин для обратной синхронизации: чит
## Установка ## Установка
1. Скачать или собрать ZIP-архив из папки `BookfusionBackSync/`: 1. Скачать `BookfusionBackSync.zip` из корня репозитория.
- Выделить все файлы внутри папки (`__init__.py`, `config.py`, `ui.py`, `main.py`,
`sync_worker.py`, `plugin-import-name-bookfusionbacksync.txt`)
- Упаковать в ZIP (не саму папку, а её содержимое)
2. В Calibre: **Preferences → Plugins → Load plugin from file** → выбрать ZIP. 2. В Calibre: **Preferences → Plugins → Load plugin from file** → выбрать ZIP.
@ -91,8 +88,7 @@ Device ID генерируется автоматически при перво
Библиотека: `GET /v3/library/books.json?page=N&per_page=100` — постраничная выгрузка. Библиотека: `GET /v3/library/books.json?page=N&per_page=100` — постраничная выгрузка.
Каждая книга (`BookV3`) содержит: Каждая книга (`BookV3`) содержит:
- `id` — числовой ID книги в библиотеке пользователя; совпадает с тем, что штатный - `id` — числовой ID книги; совпадает с тем, что штатный плагин сохраняет в `identifiers['bookfusion']`
плагин сохраняет в `identifiers['bookfusion']`
- `last_read_at` — дата последнего чтения (часто `null`) - `last_read_at` — дата последнего чтения (часто `null`)
- `reading_position.updated_at` — дата последнего обновления позиции чтения - `reading_position.updated_at` — дата последнего обновления позиции чтения

View file

@ -78,4 +78,8 @@ tests/
- Не трогать исходники — только читать - Не трогать исходники — только читать
- Не писать тесты которые меняют данные без явного указания (DELETE, POST осторожно) - Не писать тесты которые меняют данные без явного указания (DELETE, POST осторожно)
- Не хардкодить credentials в тестах — только через env переменные - Не хардкодить credentials в тестах — только через env переменные
## BookfusionBackSync
- НЕ забывай обновлять BookfusionBackSync.zip при правках в BookfusionBackSync/

View file

@ -1,4 +1,68 @@
# BookfusionPluginsResearch # BookFusion Plugins Research
Исследование доступных плагинов Bookfusion. Реверс-инжиниринг semi-public REST API сервиса [BookFusion](https://www.bookfusion.com)
Попытка сделать плагин к Calibre для синхронизации last-read date "назад" по исходникам двух официальных плагинов. Результат — документация API, тесты и
Calibre-плагин для обратной синхронизации дат чтения.
Исходный url - https://git.viorsan.com/vrr/BookfusionPluginsResearch
Зеркало https://github.com/intari/BookfusionResearchPlugins
---
## Структура репозитория
| Путь | Описание |
|------|----------|
| `calibre-plugin/` | Исходники официального Calibre-плагина BookFusion (только чтение) |
| `obsidian-plugin/` | Исходники официального Obsidian-плагина BookFusion (только чтение) |
| `docs/api.md` | Документация API, восстановленная из исходников |
| `docs/tasks/api-research.md` | Тикет с полным результатом исследования |
| `docs/notes.md` | Заметки по архитектуре Back Sync и Private API |
| `tests/` | Тесты Calibre API и Obsidian API (pytest + bash/curl) |
| `private_api/` | Документация и тесты Private API BookFusion |
| `BookfusionBackSync/` | Исходники Calibre-плагина Back Sync |
| `BookfusionBackSync.zip` | Готовый архив плагина для установки в Calibre |
---
## BookFusion API
Два semi-public REST API без официальной документации:
| API | Base URL | Аутентификация |
|-----|----------|----------------|
| Calibre API v1 | `https://www.bookfusion.com/calibre-api/v1` | HTTP Basic: `base64(api_key:)` |
| Obsidian API | `https://www.bookfusion.com` | Заголовок `X-Token: {token}` |
Полная документация со всеми эндпоинтами, структурами запросов и ответов —
в [`docs/api.md`](docs/api.md).
---
## Тесты
Тесты охватывают оба API. Obsidian happy-path тесты требуют `OBSIDIAN_TOKEN`
(получается однократно через браузер — см. `docs/api.md`, раздел 2.2).
```bash
pip install pytest requests
# pytest
export API_USER=your_bookfusion_api_key
pytest tests/ -v
# bash/curl (WSL / Linux)
export API_USER=your_bookfusion_api_key
bash tests/test_api.sh
```
---
## BookFusion Back Sync
Calibre-плагин, который читает даты последнего чтения из BookFusion и записывает
их в выбранную custom-колонку Calibre (тип Date).
**Установка:** скачать `BookfusionBackSync.zip`
Calibre **Preferences → Plugins → Load plugin from file**.
Подробнее — в [`BookfusionBackSync/readme.md`](BookfusionBackSync/readme.md).