Третьего дня собрался купить читалку. Выбор между PocketBook и Kindle решился в пользу первого, так как там ПО посвободнее и нет никаких jailbreak'ов. Ну и, плюс к этому, в Kindle, по дефолту, нельзя менять заставку - это вредительство и ни в какие ворота не лезет! В любом случае, радость покупки была недолгой, ибо захотелось книжки синхронизировать из их обширных вместилищ. И тут понеслось.
Исходные условия: NextCloud 12, PocketBook 631.
Ожидаемый результат: прямой доступ к облаку с книги без необходимости заливать что-либо по USB.
Таки да, "из коробки" есть Dropbox и получение книг по почте. Но мы не ищем лёгких путей.
Штука прикольная, но простая. Базируется на Atom и, следовательно, представляет собой xml'ки по HTTP.
Не было бы печали, если бы под PB был FBReader. Там есть отличная поддержка OPDS "из коробки" и дело с концом. Но FBReader'а под PB нет и не предвидится, поэтому всё довольно грустно.
Вообще говоря, под PB я нашёл всего две реализации OPTS. Одна простая как пробка, минималистичная и безумно стабильная от товарища Vlasov-a. Вторая - грузная, монструозная и тормозная под названием KOReader.
Собственно, вот первая ссылка из гугла. Там всё отлично описано. Здесь остановлюсь только на нюансах настройки и работы.
Главная причина всего нижеследующего: автор писал OPDS-приложение за 3 вечера. Поэтому никакого буйства функциональности. Всё аскетично, по-спартански, но стабильно и своё дело делает. Кстати, исходники замечательно читаются и убивать никого не хочется.
Так вот, ниже перечисляю обнаруженные особенности.
В остальном, что касается OPDS, если взять напильник и допилить, либо если у вас нет своего сервера и вам достаточно существующих OPDS каталогов типа либрусека и флибусты, то отличная штука.
Из прочего: больше всего огорчило то, что CoolReader из этой сборки не запоминает страницу, если из него выйти не через "Меню->Выход", а просто перейти "Домой" или выключить книгу. Это, практически, фатальный минус для ПО на читалку.
Судя по количеству звёзд на github - популярная штука. Выглядит вундервафельно. Куча опций, менюшек и прочего, но по ощущениям как-то функционально перегружено, тормознуто и нестабильно.
В общем и целом может приложение и неплохое, но в моём случае оказалась большая засада. Поддержку "флагмана" PocketBook 631 они анонсировали в сентябрьской стабильной версии koreader-nightly-20171023. При накате этой версии на PB получем segmentation fault либо при старте, либо при клике на любой пункт меню. При накате ночного билда от 11 ноября, взятого отсюда, всё более-менее работает. По крайней мере segmentation fault не сыпятся. Но OPDS в этой комплектации дальше подключения к удалённому каталогу не ушёл. Добиться до списка файлов так и не получилось. Возможно поправят в будущих версиях, либо это прекрасно работает на более старых моделях, но для новых книжек всё плохо.
Отдельно можно отметить поддержку на github. Без определённых навыков разработки туда можно не соваться. Просят запилить shell-доступ к книжке, заюзать strace или gdb, включить дебаг режим и заняться прочими непользовательскими вещами.
Тут всё плохо. Ни одного клиента для подключения к кастомным WebDAV сервисам под PB я не нашёл. Только наколеночные вещи разной степени проработанности. Ими и поделюсь.
Главный источник вдохновения - немецкая ветка форума про WebDAV на PB. Там товарищи из ГДР любезно выложили bash-скрипт с базовой реализацией WebDAV, которую осталось немного доработать напильником. Так же помог набор bash-команд 'cloud-dl' для работы с NextCloud. В итоге получилось вот такое хозяйство. Синхронизирует один уровень вложенности, обновляет файлы на основании даты, ничего не удаляет, плюс имеет хоть какой-то интерфейс на PB. С пивом покатит. Но далеко не нативный клиент Own/NextCloud'а и это печально.
Тех кто захочет допилить bash-скрипты сразу предупреждаю: на PB стоит BusyBox и, следовательно, большинство утилит командной строки так или иначе кастрировано. Это налагает кучу ограничений и влечёт создание фееричных костылей при реализации довольно простых задач. Как альтернатива: собирать свой набор утилит и с ними идти в бой. Но в этом случае, кажется, проще написать полноценную программу для PB, по аналогии с вышеописанным OPDS, например, на том же Qt.
Если начинать ковыряться в PB, то очень пригодятся следующие штуки:
Если вам ехать, а не шашечки, то есть два варианта: