Module:POTD kind
Appearance
Automatically parse whether the POTD is multiple pictures, a video, or, by default, a single picture. Used on the Main Page so the text "Today's featured {kind}" is accurate.
{{safesubst:#if:{{safesubst:#ifeq:POTD ki|sandbox|1}}{{safesubst:#ifeq:POTD kind|doc|1}}||
}}
require("strict")
local p = {}
local function today()
return os.date("%Y-%m-%d")
end
local function extract(wikitext)
local extensions = {}
-- If there's a gallery, assume multiple pictures
-- TODO: are there ever multiple videos?
if wikitext:find("</gallery>") then
return "pictures"
end
-- Look for [[File:Foo.ext|...]] (or Image:) and extract the extension
for ext in wikitext:gmatch("%[%[%s*[FfIi][iIm][lLa][eEg][eE]*%s*:%s*[^%]|]+%.(%w+)[^%]]*%]%]") do
table.insert(extensions, ext:lower())
end
local count = #extensions
if count > 1 then
-- unlikely, since it should be covered by the </gallery> check
return "pictures"
elseif count == 1 then
-- XXX: we could use mw.title.file.mimeType but that's an extra expensive property
if extensions[1] == "ogv" or extensions[1] == "webm" then
return "video"
else
return "picture"
end
else
-- 0 files or anything else
return "picture"
end
end
function p.kind(frame)
local date = frame.args.date or today()
local title = mw.title.new("Template:POTD protected/" .. date)
local content = title:getContent()
if not content then
return "picture"
end
return extract(content)
end
return p