模块:FeaturedPage
来自「荏苒之境」
此模块的文档可以在模块:FeaturedPage/doc创建
local translation = require("Module:Template translation")
local featured_page = {}
local API_EXTRACT_TEMPALTE = "http://localhost/api.php?action=query&prop=extracts&exintro&redirects=1&format=json&titles="
local API_IMAGES_TEMPLATE = "http://localhost/api.php?action=query&prop=pageimages&pithumbsize=512&redirects=1&format=json&titles="
local function get_random_title(namespace, root_page_only, title_match)
root_page_only = root_page_only or true
while true do
local title_text = mw.site.randomPages(1, namespace, title_match)[1]
if title_text == nil then
return
end
if not string.match(title_text, ":") then
title_text = root_page_only
and string.match(title_text, "([^/]+)") or title_text
return title_text
end
end
end
local function get_page_summary(title)
local d, e = mw.ext.externaldata.getExternalData {
url = API_EXTRACT_TEMPALTE..title,
format = "json"
}
if e then
error("发起请求失败")
end
local page = d[1]["__json"]["query"]["pages"][1]
return page["extract"], page["title"]
end
local function get_page_image(title)
local d, e = mw.ext.externaldata.getExternalData {
url = API_IMAGES_TEMPLATE..title,
format = "json"
}
if e then
error("发起请求失败")
end
return d[1]["__json"]["query"]["pages"][1]["pageimage"]
end
featured_page.get_random_title = get_random_title
featured_page.get_page_summary = get_page_summary
featured_page.get_page_image = get_page_image
featured_page.show = function(frame)
local langauge = translation.getLanguage()
while true do
local title_match =
(language ~= nil and language ~= "zh-cn")
and "%d/"..language or nil
local title = get_random_title(0, true, title_match)
or get_random_title(0)
local extract, real_title = get_page_summary(title)
if extract ~= "" then
extract = string.gsub(extract, real_title, "[["..real_title.."]]", 1)
local pageimage = get_page_image(title) or "占位图片.png"
return "[[File:"..pageimage.."|200px|right]]"..extract
end
end
end
return featured_page