• Преамбула

    У меня есть большая коллекция электронных книг, и для их организации на компьютере я использую потрясающую программу Calibre. Это очень мощная программа, позволяющая конвертировать книги, изменять их метаданные, организовавыть по категориям, переименовывать файлы и отправлять их на подключённое устройство для чтения, а также многое, многое другое.

    Читать дальше...

    Сами книги я предпочитаю читать на моей читалке Pocketbook 627. В этой читалке очень удобная библиотека, позволяющая фильтровать книги по жанрам, авторам и сериям, но кроме того там есть возможность отмечать книги как прочитанные, добавлять их в избранное или в пользовательские коллекции.

    К сожалению, управлять коллекциями с самого устройства не очень удобно из-за медленной работы e-ink-экрана, особенно если нужно рассортировать по коллекциям большое количество книг сразу. Поэтому мне давно хотелось иметь возможность управлять коллекциями на читалке с компьютера. Так что несколько лет назад я даже написала приложение для этого.

    В принципе это приложение работает, но я им недовольна: оно сырое, медленное и не слишком удобное, потому что, когда я его писала, то только пыталась разобраться, как вообще устроен код, и не особенно представляла, что вообще делаю. К тому же, тогда я более-менее знала только Javascript, поэтому приложение написано на Electron, что, на мой взгляд, не лучший выбор для такой задачи. По мере использования я столкнулась и с ещё одной проблемой: приложение изменяло данные на устройстве, но не сохраняло их на компьютере, так что в случае перезаписывания книг на устройстве, все коллекции приходилось сортировать заново.

    В последнее время я начала чувствовать себя более уверенно с программированием, поэтому у меня появилась мысль доработать приложение, чтобы сделать его более удобным. Однако потом я посмотрела на всю эту кучу кода и подумала: почему бы просто не написать плагин для Calibre? В таком случае мне не нужно будет писать графическую оболочку, все эти фильтры и кнопки, а достаточно просто добавить логику для синхронизации данных в Calibre с базой данных читалки.

    Челлендж заключался в том, что плагины для Calibre пишутся на Python, с которым я прежде не работала и знаю только самые основы. Так что пришлось разбираться, гуглить и ковыряться в чужом коде, но в итоге, после пары недель мучений я его всё-таки написала!

    Принцип работы

    Плагин позволяет синхронизировать коллекции, а также статус прочтения и статус избранного между книгами в Calibre и книгами в читалке Pocketbook.

    Для этого в Calibre нужно будет создать три дополнительные колонки:

    • колонку “#shelf” с типом “Текст, разделённый запятыми, работает как тэги”;
    • колонку “#read” с типом “да / нет”;
    • колонку “#favorite” с типом “да / нет”.

    Можно указать другие названия колонок в настройках плагина.

    После подключения читалки к компьютеру по USB , в главном меню появится иконка плагина Pocketbook Collections. При клике на кнопку меню можно увидеть список команд для плагина.

    Команды позволяют отправлять данные из Calibre в читалку или наоборот, выгружать из читалки в Calibre. Можно отправлять и выгружать сразу всё, либо коллекции и статусы по отдельности.

    Ссылки

    Плагин можно скачать здесь и установить вручную в настройках Calibre с помощью команды «Загрузить плагин из файла». Надеюсь, что скоро от накже появится в списке автоматической загрузки. А вот здесь написала пост о плагине на форуме Mobileread.

    Примечания

    Я пробовала также добавить двухстороннюю синхронизацию, основанную на времени последнего изменения, но результат мне не понравился. Во-первых, на моём Покетбуке почему-то иногда сбивается время, что приводит к ошибкам в таймштампах. Во-вторых, Calibre не сохраняет отдельные таймштампы для каждой колонки, а только хранит время изменения всей книги. Из-за этого было не всегда возможно точно определить, где именно — в Calibre или на читалке — произошли последние изменения коллекций и статусов, чтобы сохранить релевантные данные. Возможно я ещё попробую реализовать эту функцию позже, но пока что ручной выбор отправляемых и загружаемых данных выглядит надёжнее.

    Я также думаю о том, не добавить ли синхронизацию позиции чтения, заметок и закладок, или что там есть ещё. Не то чтобы мне был очень нужен этот функционал, но теоретически он может быть полезен. Но это как-нибудь потом.

    Важно

    Плагин позволяет добавлять данные только для книг, которые уже есть на устройстве и проиндексированы. Pocketbook индексирует новые книги только после отключения читалки от компьютера. Это означает, что если вы добавили в читалку новые книги, нужно отсоединить её от компьютера, подождать, пока устройство обнаружит книги и добавит их в базу данных, затем снова подключить читалку к компьютеру, и тогда уже можно будет добавить коллекции для новых книг.

    Плагин протестирован только на моём устройстве Pocketbook 627, но он может работать и с другими читалками Pocketbook при условии, что они используют ту же самую структуру базы данных.

    Оставить комментарий


  • Syncthing — приложение для синхронизации файлов между устройствами (напрямую, без облаков).

    Преимущества Syncthing

    • Синхронизация очень быстрая.
    • Файлы не хранятся нигде в облаках и на чужих серверах, а только на моих устройствах.
    • Есть версионирование и отслеживание конфликтов, что позволяет восстанавливать потерянные данные.
    • Синхронизация возможна даже без интернета (например, по локальной сети).
    • Работает на любых устройствах (я даже ухитрилась впихнуть Syncthing на свою читалку Pocketbook).
    • Можно синхронизировать любые папки на устройстве, независимо от их расположения (в том числе даже на флэшке).
    • Бесплатная синхронизация любых объёмов данных без ограничений.
    • Опенсорсный проект.

    Недостатки Syncthing

    • Очень много не совсем понятных настроек, в которых легко запутаться, особенно не технарю.
    • Иногда бывают конфликты с удалёнными файлами при синхронизации нескольких устройств.

    Оставить комментарий


  • Иногда хочется украсить свой Обсидиан картинками, но чтобы это смотрелось ненавязчиво. Я не очень люблю фоновые картинки и баннеры в заметках, но мне нравится добавлять картинки в боковую панель.

    Читать дальше...

    Для этого нужно сперва добавить файл изображения в хранилище, открыть его, а затем перетащить и закрепить в боковой панели, над или под основными вкладками.

    Но по умолчанию такая картинка смотрится не очень хорошо, потому что получаются лишние отступы, и верхняя панель занимает слишком много места. Вот как это выглядит:

    d7905ca71b883cf177538cb3f066a558_MD5.jpg

    Чтобы улучшить отображение картинки я написала такой css-сниппет:

    :is(.mod-left-split, .mod-right-split) .workspace-tabs:has(.image-container):not(.mod-active) .workspace-tab-header-container {
        display: none;
    }
     
    :is(.mod-left-split, .mod-right-split) .workspace-tabs:has(.image-container) {
        max-height: 150px;;
    }
     
    :is(.mod-left-split, .mod-right-split) .workspace-tabs:has(.image-container) .workspace-tab-container .view-content {
     padding: 0;
     overflow: hidden;
    }
     
    :is(.mod-left-split, .mod-right-split) .workspace-tabs:has(.image-container):not(.mod-active) .workspace-tab-container .view-content .image-container {
        padding-top: 5px;
     
    }
     
    :is(.mod-left-split, .mod-right-split) .workspace-tabs:has(.image-container) .workspace-tab-container .view-content .image-container {
        width: 100%;
        height: 100%;
    }
     
    :is(.mod-left-split, .mod-right-split) .workspace-tabs:has(.image-container) .workspace-tab-container .view-content img {
        width: 100%;
        height: 100%;
        object-fit: cover;
    }

    После подключения сниппета картинка выглядит так:

    e701c7cba3c4fcaf573d39b07c97b7b2_MD5.jpg

    Теперь она занимает всю область, без отступов, и выглядит более стильно. Верхняя панель скрыта и будет появляться только при клике на картинку.

    Оставить комментарий


  • Я наконец дозрела попробовать Syncthing для синхронизации Обсидиана. До этого меня останавливало, что там надо, чтобы устройства были в одной сети, а как это организовать вне дома без танцев с бубном, я не знала (всё, что там про какие-то сервера и порты вызывает у меня короткое замыкание в мозгу).

    Моя проблема в том, что мне надо синхронизировать файлы с рабочим компом. На работе у меня нет вайфая, стоит файервол с кучей ограничений, почти все настройки намертво заблокированы, а периодически админы вообще отключают интернет, мол, нефиг расходовать рабочий трафик попусту. Из-за этого большинство методов синхронизации у меня там не работало вообще или работало плохо (мне удалось настроить гит, но он был очень медленный). У меня была мысль раздать вайфай с телефона, но как назло мой провайдер недавно сделал раздачу интернета с телефона платной и жутко дорогой.

    Но недавно я узнала, что, оказывается, Syncthing может синхронизировать вообще без интернета! Достаточно точки доступа. То есть, план действий, такой:

    • отключаем мобильный интернет на телефоне (чтобы не расходовать платный трафик);
    • включаем на телефоне точку доступа;
    • подключаем компьютер к этой точке доступа как к вайфаю;
    • запускаем Syncthing.

    Профит! Интернета на устройствах нет, но они синхронизируются. Минус способа в том, что приходится отключать интернет на телефоне и держать активной точку доступа, что не всегда удобно, но для быстрой синхронизации в начале и в конце рабочего дня — идеально. И при желании можно синхронизировать устройства хоть в лесу, где связи нет вообще.

    gf

    Оставить комментарий


  • У меня есть читалка Покетбук, и в ней можно сортировать книги по полочкам. Но массово это в самой читалке делать неудобно, так что я накодила вот такую прогу: PocketBook Collection Manager.

    Это ученический проект, который нуждается в доработке, но дело своё делает.

    Оставить комментарий