добавлен готовый плагин BookfusionBackSync
This commit is contained in:
parent
dff3c3bc28
commit
b7d1a910e7
4 changed files with 74 additions and 10 deletions
BIN
BookfusionBackSync.zip
Normal file
BIN
BookfusionBackSync.zip
Normal file
Binary file not shown.
|
|
@ -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` — дата последнего обновления позиции чтения
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -78,4 +78,8 @@ tests/
|
||||||
|
|
||||||
- Не трогать исходники — только читать
|
- Не трогать исходники — только читать
|
||||||
- Не писать тесты которые меняют данные без явного указания (DELETE, POST осторожно)
|
- Не писать тесты которые меняют данные без явного указания (DELETE, POST осторожно)
|
||||||
- Не хардкодить credentials в тестах — только через env переменные
|
- Не хардкодить credentials в тестах — только через env переменные
|
||||||
|
|
||||||
|
|
||||||
|
## BookfusionBackSync
|
||||||
|
- НЕ забывай обновлять BookfusionBackSync.zip при правках в BookfusionBackSync/
|
||||||
|
|
|
||||||
70
README.md
70
README.md
|
|
@ -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).
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue