Changes

1,291 bytes added ,  21:39, 15 July 2021
Pywikibot 6.4.0
-- Find Image
-- returns the first filename in the current page
-- checks for [[File:, [[Image:, infobox image, gallery

local p = {}

function p.scan(frame)
local args = frame.args
local pargs = frame:getParent().args
for k, v in pairs(pargs) do
args[k] = v
end

-- first unnamed parameter or |title=
local title = mw.text.trim(args[1] or args.title or "", "\t\r\n\f %[%]")
local titleobj
if title == "" then
titleobj = mw.title.getCurrentTitle()
else
titleobj = mw.title.new(title)
end

local pagetxt = titleobj:getContent()
if not pagetxt then return nil end

-- look for first [[File:
local start, last, txt = pagetxt:find("%[%[[Ff]ile:([^|%]]*)")
-- look for first [[Image:
local start1, last1, txt1 = pagetxt:find("%[%[[Ii]mage:([^|%]]*)")
-- look for infobox image
local start2, last2, txt2 = pagetxt:find("|%s*image%s*=%s*([^.]*.%a*)%A")

if (start1 or 1e8) < (start or 1e8) then
start, last, txt = start1, last1, txt1
end
if (start2 or 1e8) < (start or 1e8) then
start, last, txt = start2, last2, txt2
end

if not txt then -- look for gallery with Image:
local start3, last3, txt3 = pagetxt:find("[Ii]mage:%s*([^.]*.%a*)%A")
if (start3 or 1e8) < (start or 1e8) then
start, last, txt = start3, last3, txt3
end
end

return txt
end

return p