Мое
October 21

Синхронизация облака книг PocketBook Cloud

Данная статья разработана и подготовлена в телеграмм канале Крипто Парень. Подписывайся на мой телеграмм канал, там много полезной и интересной информации по криптовалютам.

Предлагаю вам услуги своего бота, по заправке газом в сети TRC20.

Информацию по использованию и аренде газа в сети TRC20 можешь найти в моей группе TRON TRX SELL ENERGY

PocketBook Cloud

Есть такие читалки PocketBook, приложения-читалки на iphone и android. И естественно существует облако - объединяющее их всех: PocketBook Cloud

Данное облако позволяет хранить 5 Gb ваших книг, закладки и статусы чтения. Хранить и синхронизировать между всеми устройствами. Так же книги в облаке можно читать прямо в браузере.

Через данное облако удобно добавлять книги в читалки на всех ваших гаджетах. Но иногда нужно делать прямо противоположное - скачивать из облака уже добавленные книги.

Как выкачать все книги из PocketBook Cloud (синхронизировать)

Столкнулся я с таким своим косяком: Накачал книг, напихал их в PocketBook Cloud и удалил оригиналы. И.. Как выкачать их обратно? Никак. По одной если только качать. Пришлось гуглить - есть ли где функционал выкачки книг. Как оказалось, на гитхабе есть готовый докер с программой синхронизации. Данный контейнер позволяет скачивать книги на жесткий диск, и периодически проверять наличие новых книг в облаке. Такая своеобразная синхронизация.

Начнем:

Для запуска контейнера нам понадобится Docker. как его ставить и запускать не буду писать тут, легко все гуглится в интернете. Я настраивал все на Win10 машине - докер у меня там с графическим интерфейсом.

На компе создаем docker-compose.yml файл настроек с примерно таким содержанием:

version: '3.7'
services:
pocketbook-sync:
image: micronull/pbcsync:latest
container_name: pocketbook-sync
volumes:
- E:\PB\Books:/books # Локальный путь: Путь в контейнере
environment:
- PBC_CLIENT_ID=qNAx1RDb
- PBC_CLIENT_SECRET=K3YYSjCgDJNoWKdGVOyO1mrROp3MMZqqRNXNXTmh
- PBC_USERNAME=ЛОГИН_ОТ_ОБЛАКА
- PBC_PASSWORD=ПАРОЛЬ_ОТ_ОБЛАКА
- DAEMON=true # Запуск в режиме демона для постоянной синхронизации
- DAEMON_TIMEOUT=24h0m0s # Интервал синхронизации
- DEBUG=true
restart: always

В данном файле настроек книги будут качаться в папку E:\PB\Books если нужен другой путь - замените на свое. Данную строку не трогаем :/books

Так же нужно прописать ваши учетные данные от облака:
- PBC_USERNAME=ЛОГИН_ОТ_ОБЛАКА - PBC_PASSWORD=ПАРОЛЬ_ОТ_ОБЛАКА

Далее, допустим ваш yml файл лежит на рабочем столе.

Открываем Power Shell и вводим команду перехода на раб стол:

cd $env:USERPROFILE\Desktop

Далее вводим команду запуска контейнера с вашими настройками:

docker compose up -d

После чего у вас появится контейнер в докере, который можно запускать/перезапускать из вебинтерфейса докера. При запуске в вашу папку из настроек начнут качаться ваши книги из облака.

В данном конфиге контейнер будет постоянно висеть в фоне и раз в сутки будет выкачивать новые книги из облака.

Послесловие..

Можно поднять данную синхронизацию на одноплатном компьютере типа Raspberry Pi:

У меня в наличии валялся Raspberry Pi 3, будем далее мучать его:

Проверяем версию архитектуры вашего одноплатника:

uname -m

У меня выдало следующее: armv7l

Нам нужно собрать версию PocketBook Cloud Sync докера под нашу архитектуру:

Клонируем репозиторий:

cd ~ git clone https://github.com/micronull/pocketbook-cloud-sync.git cd pocketbook-cloud-sync

Соберите Docker-образ локально:

docker build -t pbcsync:latest .

Эта команда соберет образ, используя Dockerfile из репозитория, и в процессе сборки она будет использовать Python и другие инструменты, предназначенные для вашей текущей архитектуры (32-битной ARM). Это создаст образ, который будет работать


Так как у меня есть готовый .yml файл под винду, то правим его под наш одноплатник:

docker-compose.yml

version: '3.7'

services: pocketbook-sync: image: pbcsync:latest container_name: pocketbook-sync volumes: - /usr/local/bin/pocketbook-sync/books:/books environment: - PBC_CLIENT_ID=qNAx1RDb - PBC_CLIENT_SECRET=K3YYSjCgDJNoWKdGVOyO1mrROp3MMZqqRNXNXTmh - PBC_USERNAME=ЛОГИН_ОТ_ОБЛАКА - PBC_PASSWORD=ПАРОЛЬ_ОТ_ОБЛАКА - DAEMON=true - DAEMON_TIMEOUT=24h0m0s - DEBUG=true ports: - "8080:80" restart: always

Теперь поставим (если его нет) compose на одноплатник:

sudo apt update sudo apt install docker-compose-plugin

Если не прокатит, то можно скачать под свою архитектуру исполняемый файл - у меня так и прокатило:

Загрузите исполняемый файл Docker Compose V2: Вам нужно определить архитектуру вашей Raspberry Pi (мы делали это ранее с uname -m).

  • Если uname -m выдает aarch64 (это большинство современных Pi, как Pi 3B+, 4, 5 с 64-битной ОС):

sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-linux-aarch64 -o /usr/local/bin/docker-compose

  • Если uname -m выдает armv7l (это большинство старых Pi, как Pi 3, Pi 2, или Pi 4 с 32-битной ОС):

sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-linux-armv7 -o /usr/local/bin/docker-compose

  • Если uname -m выдает armv6l (Pi Zero, Pi 1):

sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-lin

Делаем скачанный файл исполняемым:

sudo chmod +x /usr/local/bin/docker-compose

Проверяем версию:

docker-compose version

У меня выдало так: Docker Compose version v2.40.2


Теперь все готово к запуску нашего .yml файла лежащего в папке /usr/local/bin/pocketbook-sync, для этого выполняем:

cd /usr/local/bin/pocketbook-sync

docker-compose up -d

Ах да, права на папку /usr/local/bin/pocketbook-sync/Books выдайте для записи!

Просмотреть логи можно по команде:

docker-compose logs -f pocketbook-sync

После всего этого на вашем одноплатном компуктере будет запущен образ контейнера, который раз в сутки будет выкачивать новые книги из вашего облака PocketBook Cloud в папку /usr/local/bin/pocketbook-sync/Books

Теперь команды нужные для докера:


Посмотреть образ в докере: Docker images

Посмотреть контейнер в докере: Docker ps -a

Удалить контейнер докера: Docker rm имя

Удалить образ докера: Docker rmi имя

Ну и стандартные старт/рестарт: Docker start имя

Остановить все в терминале: docker stop $(docker ps -q)

Запустить все (включая те, что были остановлены) в терминале:
docker start $(docker ps -aq)

Перезапуск всех контейнеров: docker restart $(docker ps -a -q)

Сколько занимает места докер: docker system df

Очистка места: docker system prune -a

Посмотреть сети докера: docker network ls | findstr proxy-net

Потребление памяти контейнерами: docker stats

Пересоздание контейнеров: docker compose up -d --force-recreate

Пересоздание контейнеров: docker compose up -d --build