Module:InfoboxExtractor

local p = {}

local function extractInfobox(wikitext) local startInfobox = string.find(wikitext, "{{[^}]*Infobox") if not startInfobox then return nil end

local braceCount = 0 local endInfobox = startInfobox

for i = startInfobox, #wikitext do       local char = wikitext:sub(i, i)        if char == '{' then braceCount = braceCount + 1 elseif char == '}' then braceCount = braceCount - 1 end

if braceCount == 0 then endInfobox = i           break end end

return wikitext:sub(startInfobox, endInfobox) end

function p.extract(frame) local pageTitle = frame.args[1] if not pageTitle then return "Error: Please provide a page title." end

local page = mw.title.new(pageTitle) if not page or not page.exists then return "Error: Page not found." end

local wikitext = page:getContent local infobox = extractInfobox(wikitext)

if not infobox then return "Error: Infobox not found." end

local label = frame.args[2] if not label then return "Error: Please provide a label." end

local pattern = "|" .. label .. " *= *([^\n]+)" local value = string.match(infobox, pattern)

if not value then return "Error: Label not found in infobox." end

return value end

return p