local p = {}
function Status(code)
local list = {
["+"] = "done",
["Done"] = "done",
["done"] = "done",
["完成"] = "done",
["-"] = "not done",
["Not done"] = "not done",
["not done"] = "not done",
["拒絕"] = "not done",
["拒绝"] = "not done",
["驳回"] = "not done",
["駁回"] = "not done",
["未完成"] = "not done",
["on hold"] = "oh",
["擱置"] = "oh",
["搁置"] = "oh",
["等待"] = "oh",
["等待中"] = "oh",
["OH"] = "oh",
["oh"] = "oh",
["hold"] = "oh",
["Hold"] = "oh",
["*"] = "oh",
["?"] = "oh",
["新申請"] = "new"
}
return list[code] or "new"
end
--- DRV
function p._DRV_get()
local page = mw.title.new('Wikipedia:存廢覆核請求'):getContent()
local result = {}
for title, status in mw.ustring.gmatch( page, '==%s*([^\n]-)%s*==.-\n%*{{Status([^}]+)}}' ) do
status = mw.ustring.gsub(status, "%|1=([^|}]+).*", "%1")
status = mw.ustring.gsub(status, "%|([^|}]+).*", "%1")
table.insert(result, {["title"]=title, ["status"]=Status(status)})
end
return result
end
function p.DRV_count(frame)
local args = frame.args
local count = 0
for key, value in pairs(p._DRV_get()) do
if value.status == args[1] then
count = count + 1
end
end
return count
end
function p.DRV_list(frame)
local args = frame.args
local list = {}
for key, value in pairs(p._DRV_get()) do
if value.status == args[1] then
table.insert( list, "[[Wikipedia:存廢覆核請求#"..mw.uri.anchorEncode(frame:preprocess(value.title)).. "|"..mw.uri.anchorEncode(frame:preprocess(value.title)).."]]" )
end
end
return mw.text.listToText(list, "、", "、")
end
--- VIP
function p._VIP_get()
local page = mw.title.new('Wikipedia:当前的破坏'):getContent()
local result = {}
for text in mw.text.gsplit( page, '\n===' ) do
local _, _, user = mw.ustring.find(text, "{{vandal%|(.-)}}")
if user then
user = string.gsub(user, "^1=", "")
local done = true
if mw.ustring.find(text, "* 处理:<!-- 非管理員僅可標記已執行的封禁,針對提報的意見請放在下一行 -->", 1, true) then
done = false
end
if mw.ustring.find(text, "* 处理:%s*$") then
done = false
end
if mw.ustring.find(text, "* 处理:%s*\n") then
done = false
end
table.insert(result, {["user"]=user, ["status"]=done})
end
end
return result
end
function p.VIP_count(frame)
local count = 0
for key, value in pairs(p._VIP_get()) do
if value.status == false then
count = count + 1
end
end
return count
end
function p.VIP_list(frame)
local list = {}
for key, value in pairs(p._VIP_get()) do
if value.status == false then
table.insert( list, "[[Wikipedia:当前的破坏#"..mw.uri.anchorEncode(value.user).. "|"..mw.uri.anchorEncode(value.user).."]]" )
end
end
return mw.text.listToText(list, "、", "、")
end
--- EWIP
function p._EWIP_get()
local page = mw.title.new('Wikipedia:管理员布告板/编辑争议'):getContent()
local result = {}
for text in mw.text.gsplit( page, '\n===' ) do
local _, _, user = mw.ustring.find(text, "{{vandal%|(.-)}}")
if user then
user = string.gsub(user, "^1=", "")
local done = true
if mw.ustring.find(text, "* 处理:<!-- 非管理員僅可標記已執行的封禁,針對提報的意見請放在下一行 -->", 1, true) then
done = false
end
if mw.ustring.find(text, "* 处理:%s*$") then
done = false
end
table.insert(result, {["user"]=user, ["status"]=done})
end
end
return result
end
function p.EWIP_count(frame)
local count = 0
for key, value in pairs(p._EWIP_get()) do
if value.status == false then
count = count + 1
end
end
return count
end
function p.EWIP_list(frame)
local list = {}
for key, value in pairs(p._EWIP_get()) do
if value.status == false then
table.insert( list, "[[Wikipedia:管理员布告板/编辑争议#"..mw.uri.anchorEncode(value.user).. "|"..mw.uri.anchorEncode(value.user).."]]" )
end
end
return mw.text.listToText(list, "、", "、")
end
-- RFPP
function p._RFPP_get()
local page = mw.title.new('Wikipedia:请求保护页面'):getContent()
local rfpp = mw.text.split(page, "== 请求解除保护 ==")[1]
local rfunpp = mw.text.split(page, "== 请求解除保护 ==")[2]
local result = {}
for text in mw.text.gsplit( rfpp, '\n===' ) do
local _, _, page = mw.ustring.find(text, "^%s*%[%[:?(.-)%]%]%s*===")
if page then
local done = false
if mw.ustring.find(text, "{{RFPP|", 1, true) or mw.ustring.find(text, "{{rfpp|", 1, true) then
done = true
end
table.insert(result, {["type"]="p", ["page"]=page, ["status"]=done})
end
end
for text in mw.text.gsplit( rfunpp, '\n===' ) do
local _, _, page = mw.ustring.find(text, "^%s*%[%[:?(.-)%]%]%s*===")
if page then
local done = false
if mw.ustring.find(text, "{{RFPP|", 1, true) or mw.ustring.find(text, "{{rfpp|", 1, true) then
done = true
end
table.insert(result, {["type"]="up", ["page"]=page, ["status"]=done})
end
end
return result
end
function p.RFPP_count(frame)
local args = frame.args
local count = 0
for key, value in pairs(p._RFPP_get()) do
if value.status == false and value.type == args[1] then
count = count + 1
end
end
return count
end
function p.RFPP_list(frame)
local args = frame.args
local list = {}
for key, value in pairs(p._RFPP_get()) do
if value.status == false and value.type == args[1] then
table.insert( list, "[[Wikipedia:请求保护页面#"..mw.uri.anchorEncode(value.page).. "|"..mw.uri.anchorEncode(value.page).."]]" )
end
end
return mw.text.listToText(list, "、", "、")
end
-- RRD
function p._RRD_get()
local page = mw.title.new('Wikipedia:修订版本删除请求'):getContent()
local result = {}
for status, title in mw.ustring.gmatch( page, '{{Revdel\n%|%s*status%s*=%s*([^\n]+)\n%|%s*article%s*=%s*([^\n]+)' ) do
status = mw.ustring.gsub(status, "<!%-%-不要修改本参数%-%->", "")
table.insert(result, {["title"]=title, ["status"]=Status(status)})
end
return result
end
function p.RRD_count(frame)
local args = frame.args
local count = 0
for key, value in pairs(p._RRD_get()) do
if value.status == args[1] then
count = count + 1
end
end
return count
end
function p.RRD_list(frame)
local args = frame.args
local list = {}
for key, value in pairs(p._RRD_get()) do
if value.status == args[1] then
table.insert( list, "[[Wikipedia:修订版本删除请求#"..mw.uri.anchorEncode(value.title).. "|"..mw.uri.anchorEncode(value.title).."]]" )
end
end
return mw.text.listToText(list, "、", "、")
end
--- CV
function p._CV_get()
local page = mw.title.new('Wikipedia:頁面存廢討論/疑似侵權'):getContent()
local result = {}
for title, time in mw.ustring.gmatch( page, '{{CopyvioEntry%|1=(.-)%|time=(.-)%}}' ) do
if (tonumber(time) and tonumber(time) < os.time()) and (mw.title.new(title)or{}).exists then
table.insert(result, {["title"]=title})
end
end
return result
end
function p.CV_count(frame)
return #p._CV_get()
end
function p.CV_list(frame)
local args = frame.args
local list = {}
for key, value in pairs(p._CV_get()) do
table.insert( list, "[[Wikipedia:頁面存廢討論/疑似侵權#"..mw.uri.anchorEncode(value.title).. "|"..mw.uri.anchorEncode(value.title).."]]" )
end
return mw.text.listToText(list, "、", "、")
end
--- UAA
function p._UAA_get()
local page = mw.title.new('Wikipedia:管理员布告板/不当用户名'):getContent()
local result = {}
for user in mw.ustring.gmatch( page, '{{user%-uaa%|1=(.-)}}' ) do
table.insert(result, {["user"]=user})
end
return result
end
function p.UAA_count(frame)
return #p._UAA_get()
end
function p.UAA_list(frame)
local args = frame.args
local list = {}
for key, value in pairs(p._UAA_get()) do
table.insert( list, "[[Wikipedia:管理员布告板/不当用户名#"..mw.uri.anchorEncode(value.user).. "|"..mw.uri.anchorEncode(value.user).."]]" )
end
return mw.text.listToText(list, "、", "、")
end
--- AFFP
function p._AFFP_get()
local page = mw.title.new('Wikipedia:防滥用过滤器/错误报告'):getContent()
local result = {}
for title, status in mw.ustring.gmatch( page, '===%s*%[%[:?(.-)%]%].-===%s*\n;{{bugstatus%|status=(.-)%|' ) do
table.insert(result, {["title"]=title, ["status"]=status})
end
return result
end
function p.AFFP_count(frame)
local args = frame.args
local count = 0
for key, value in pairs(p._AFFP_get()) do
if value.status == args[1] then
count = count + 1
end
end
return count
end
function p.AFFP_list(frame)
local args = frame.args
local list = {}
for key, value in pairs(p._AFFP_get()) do
if value.status == args[1] then
table.insert( list, "[[Wikipedia:防滥用过滤器/错误报告#"..mw.uri.anchorEncode(value.title).. "(过滤器日志)|"..mw.uri.anchorEncode(value.title).."]]" )
end
end
return mw.text.listToText(list, "、", "、")
end
-- AFDB
function p._AFDB_get(frame)
local page = mw.title.new('Wikipedia:頁面存廢討論/積壓討論'):getContent()
page = frame:preprocess( page )
local result = {}
for title in mw.ustring.gmatch( page, '\n==+%s*(.-)%s*==+' ) do
if string.find(title, "{{[[Template:notability|notability]]}}模板", 1, true) then
-- continue
else
table.insert(result, {["title"]=title})
end
end
return result
end
function p.AFDB_count(frame)
return #p._AFDB_get(frame)
end
function p.AFDB_list(frame)
local args = frame.args
local list = {}
for key, value in pairs(p._AFDB_get(frame)) do
table.insert( list, "[[Wikipedia:頁面存廢討論/積壓討論#"..mw.uri.anchorEncode(value.title).. "|"..mw.uri.anchorEncode(value.title).."]]" )
end
return mw.text.listToText(list, "、", "、")
end
-- END
return p