Комментарии 11
Спасибо за статью, отличное начало
Я правильно понял, что с файлами на S3, OneNote, DropBox можно работать напрямую? Потому как из документации Joplin работа идет через сервер
Архитектура

Как вы на S3 находили нужные файлы? Там же еще есть diff файлы.
Если ответ на 1. - "да", то получается новый клиент для Joplin написать совсем нетрудно? Почему же их нет? Мне нравится Joplin, но UX у него ужасный.
Спасибо
Я упомянул про инсталляцию joplin server как цели синхронизации, в self-hosted варианте. Это тот случай, который я не стал реализовывать: не захотелось лезть в закрытый API. Технически это даже проще, чем поднять API от CLI, надо только поизучать запросы. И все клиенты переключить на self-hosted сервер как цель синхронизации
В моем случае цель синхронизации это бакет в S3, и клиент синхронизируется с нейСмотрел логи S3 по времени обновления. В моем случае, для обновления заметки, не понадобилось трогать diff файлы: обновления контента и даты оказалось достаточно
Да, UX такой себе. Joplin offline-first софтина с возможностью синхронизации. Написание альтернативного клиента сведется к написанию своего софта для заметок, который будет совместим с форматом хранилищ. Ограничений нет, просто в реальном клиенте куча деталей вроде упомянутых diff файлов
Для клиента я бы начал с поддержки API сервера как раз, хоть он и не публичный.
То есть, вы по логам определили имя файла заметки и дальше уже работали с ним? А что-то более высокоуровневое можно из S3 пакета файлов получить? Определить все Joplin notebooks, определить файлы заметок, входящие в определённый notebook, построить всё дерево - такое возможно? Не нашел в документации ничего по этому поводу.
Я бы не хотел привязываться ни к Joplin server, ни к CLI, если есть возможность работать с файлами напрямую.
Нет, такую информацию можно получить только выгрузив контент файлов. В названии в S3 используется формат <id>.md
. Все, что касается типа файла, родительского элемента итп лежит в метаданных в самом файле. Например, параметр type_
будет определять тип.
То есть, в любом случае для S3 изначально придется получить все файлы, чтобы по ним построить зависимости. Далее можно при повторной синхронизации подтягивать изменения и применять их к локальным данным. Так делают сейчас клиенты, судя по их логам при синхронизации
Да, я сейчас поэкспериментировал - надо всё сгрузить и построить дерево. И потом от времени последней синхронизации смотреть на S3 измененные файлы. Не очень логика, как мне кажется.
Diff, в принципе, можно отключить в клиенте. В любом случае, он вроде идёт "назад", то есть, изменения от текущей ревизии в прошлое.
Спасибо, очень полезная информация.
В свое время переехал с Joplin на Obsidian в том числе из-за того, что на нем проще синхронизировать заметки между разными устройствами.
Пробовал Obsidian, но уже не помню почему отказался в пользу Joplin. А чем синхронизация проще? Если верно понял, для Obsidian можно просто синхронизировать каталог с данными сторонним софтом?
Синхронизация Joplin плохо работала для WebDAV с яндекс.диском, для больших файлов. Для S3 полет нормальный
Если верно понял, для Obsidian можно просто синхронизировать каталог с данными сторонним софтом?
Да, просто каталог. Синхронизировать можно как угодно. Я использовал SyncThing. Настраивать не так, чтобы удобно, но делается это один раз. А так можно всякими Дисками, dropbox'ами и т.д. А если занести Obsidian денюжку, то все будет из коробки.
У этого подхода есть минус
Прежде чем начать редактировать надо сперва не забыть забрать изменения
Случайный пробел, и все файл перетерся на сервер
Я использовал GoodSync и FolderSync на телефоне
Автоматическое обновление заметок в Joplin