diff --git a/BookfusionBackSync.zip b/BookfusionBackSync.zip new file mode 100644 index 0000000..e85ff9e Binary files /dev/null and b/BookfusionBackSync.zip differ diff --git a/BookfusionBackSync/readme.md b/BookfusionBackSync/readme.md index cea6eba..edf9067 100644 --- a/BookfusionBackSync/readme.md +++ b/BookfusionBackSync/readme.md @@ -37,10 +37,7 @@ Calibre-плагин для обратной синхронизации: чит ## Установка -1. Скачать или собрать ZIP-архив из папки `BookfusionBackSync/`: - - Выделить все файлы внутри папки (`__init__.py`, `config.py`, `ui.py`, `main.py`, - `sync_worker.py`, `plugin-import-name-bookfusionbacksync.txt`) - - Упаковать в ZIP (не саму папку, а её содержимое) +1. Скачать `BookfusionBackSync.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` — постраничная выгрузка. Каждая книга (`BookV3`) содержит: -- `id` — числовой ID книги в библиотеке пользователя; совпадает с тем, что штатный - плагин сохраняет в `identifiers['bookfusion']` +- `id` — числовой ID книги; совпадает с тем, что штатный плагин сохраняет в `identifiers['bookfusion']` - `last_read_at` — дата последнего чтения (часто `null`) - `reading_position.updated_at` — дата последнего обновления позиции чтения diff --git a/CLAUDE.md b/CLAUDE.md index 8bde02b..c3f213e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -78,4 +78,8 @@ tests/ - Не трогать исходники — только читать - Не писать тесты которые меняют данные без явного указания (DELETE, POST осторожно) -- Не хардкодить credentials в тестах — только через env переменные \ No newline at end of file +- Не хардкодить credentials в тестах — только через env переменные + + +## BookfusionBackSync +- НЕ забывай обновлять BookfusionBackSync.zip при правках в BookfusionBackSync/ diff --git a/README.md b/README.md index 9e4435a..60f998a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,68 @@ -# BookfusionPluginsResearch +# BookFusion Plugins Research -Исследование доступных плагинов Bookfusion. -Попытка сделать плагин к Calibre для синхронизации last-read date "назад" \ No newline at end of file +Реверс-инжиниринг semi-public REST API сервиса [BookFusion](https://www.bookfusion.com) +по исходникам двух официальных плагинов. Результат — документация 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).