commit 13255151a075674aec278faf73d539ac5de37e6b Author: antares Date: Sat Jul 6 23:51:28 2024 -0700 initial - almost working diff --git a/pleroma-comments.lua b/pleroma-comments.lua new file mode 100644 index 0000000..ac5513e --- /dev/null +++ b/pleroma-comments.lua @@ -0,0 +1,82 @@ + +-- 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 + +