-- can't resolve seggfault on luasec, luasocket' -- local https = "wget" local json = require("cjson") function tokenizeString(inputString, delimiter) local tokens = {} for token in inputString:gmatch("[^" .. delimiter .. "]+") do table.insert(tokens, token) end return tokens end function get_api_link(str) local tokens = tokenizeString(str, '/') -- 1 = protocol, 2 = host ... -- https://host.tld/notice/12345 local id = tokens[#tokens] local host = tokens[2] return "https://" .. host .. "/api/v1/statuses/" .. id .. "/context" end function get(link) local args = { "-qO-", link } local data = pandoc.pipe("wget", args, "") local parsed = json.decode(data) -- print(link) return parsed end function short_date(timestamp) local pattern = "(%d+)-(%d+)-(%d+)T(%d+):(%d+):(%d+).000Z" local year, month, day, hour, min, sec = timestamp:match(pattern) local epoch = os.time({ year = year, month = month, day = day, hour = hour, min = min, sec = sec }) return os.date("%a, %B %d, %Y", epoch) end function write_comments(pleroma_posts) local template = [[ $datetime$ $alias$ $text$ ]] local comments = {} local replies = pleroma_posts["descendants"] for _, post in ipairs(replies) do local datetime = short_date(post["created_at"]) local alias = post["account"]["acct"] local text = post["pleroma"]["content"]["text/plain"] local interpolated = template:gsub("%$(%w+)%$", { datetime=datetime, alias = alias, text = text }) print(interpolated) end return comments end function Meta(meta) local elem = meta["pleroma-url"] -- print(elem) if elem == nil then return -- abort end local s = pandoc.utils.stringify(elem) local url = get_api_link(s) write_comments(get(url)) end