2
0
mirror of https://github.com/koreader/koreader synced 2024-11-18 03:25:46 +00:00
koreader/plugins/calibre.koplugin/extensions.lua
2021-09-01 21:03:24 +02:00

81 lines
1.9 KiB
Lua

--[[
File formats supported by KOReader. These are reported when the device talks with calibre wireless server.
calibre assumes that the list is in desired order.
When sending documents if no format on the list exists then calibre converts the book to the first format.
See https://www.mobileread.com/forums/showthread.php?t=341423
--]]
local valid_ext = {
"epub",
"fb2",
"mobi",
"azw",
"xps",
"doc",
"docx",
"djv",
"djvu",
"pdf",
"cbz",
"htm",
"html",
"xhtml",
"pdb",
"prc",
"rtf",
"txt",
"md",
"chm",
"zip",
}
-- if the file "calibre-extensions.lua", under dataDir, returns a table
-- then use it instead of default extensions.
local function getCustomConfig()
local path = require("datastorage"):getDataDir()
local ok, extensions = pcall(dofile, string.format("%s/%s", path, "calibre-extensions.lua"))
if ok then return extensions end
end
local CalibreExtensions = {
outputs = { "epub", "mobi", "docx", "fb2", "pdf", "txt" },
default_output = G_reader_settings:readSetting("calibre_wireless_default_format") or "epub",
user_overrides = getCustomConfig(),
}
function CalibreExtensions:get()
if type(self.user_overrides) == "table" then
return self.user_overrides
else
local sorted = {}
sorted[1] = self.default_output
for _, v in ipairs(valid_ext) do
if v ~= self.default_output then
sorted[#sorted+1] = v
end
end
return sorted
end
end
function CalibreExtensions:getInfo()
local str = ""
local t = self:get()
for i, v in ipairs(t) do
if i == #t then
str = str .. v
else
str = str .. v .. ", "
end
end
return str
end
function CalibreExtensions:isCustom()
return self.user_overrides ~= nil
end
return CalibreExtensions