mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Exporter plugin: allow adding book md5 checksum when exporting highlights (#9610)
This allows interoperability between different readers who want to import highlights on different devices/file systems. All that is needed then to import highlights is to match the local books and their path based on the checksum.
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
local Device = require("device")
|
||||
local rapidjson = require("rapidjson")
|
||||
local md5 = require("ffi/MD5")
|
||||
local _ = require("gettext")
|
||||
|
||||
-- json exporter
|
||||
local JsonExporter = require("base"):new {
|
||||
@@ -7,13 +9,36 @@ local JsonExporter = require("base"):new {
|
||||
shareable = Device:canShareText(),
|
||||
}
|
||||
|
||||
local function format(booknotes)
|
||||
function JsonExporter:getMenuTable()
|
||||
return {
|
||||
text = _("Json"),
|
||||
checked_func = function() return self:isEnabled() end,
|
||||
sub_item_table = {
|
||||
{
|
||||
text = _("Export to Json"),
|
||||
checked_func = function() return self:isEnabled() end,
|
||||
callback = function() self:toggleEnabled() end,
|
||||
},
|
||||
{
|
||||
text = _("Include book checksum in export"),
|
||||
checked_func = function() return self.settings.bookChecksum end,
|
||||
callback = function()
|
||||
self.settings.bookChecksum = not self.settings.bookChecksum
|
||||
self:saveSettings()
|
||||
end,
|
||||
}
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
local function format(booknotes, settings)
|
||||
local t = {
|
||||
title = booknotes.title,
|
||||
author = booknotes.author,
|
||||
entries = {},
|
||||
exported = booknotes.exported,
|
||||
file = booknotes.file,
|
||||
md5sum = settings.bookChecksum and md5.sumFile(booknotes.file) or nil,
|
||||
number_of_pages = booknotes.number_of_pages
|
||||
}
|
||||
for _, entry in ipairs(booknotes) do
|
||||
@@ -27,13 +52,13 @@ function JsonExporter:export(t)
|
||||
local timestamp = self.timestamp or os.time()
|
||||
local path = self:getFilePath(t)
|
||||
if #t == 1 then
|
||||
exportable = format(t[1])
|
||||
exportable = format(t[1], self.settings)
|
||||
exportable.created_on = timestamp
|
||||
exportable.version = self:getVersion()
|
||||
else
|
||||
local documents = {}
|
||||
for _, booknotes in ipairs(t) do
|
||||
table.insert(documents, format(booknotes))
|
||||
table.insert(documents, format(booknotes, self.settings))
|
||||
end
|
||||
exportable = {
|
||||
created_on = timestamp,
|
||||
|
||||
Reference in New Issue
Block a user