(未完成)
 
(修 bug 中 ……)
 
(未显示同一用户的16个中间版本)
第4行: 第4行:
local p = {} --p代表一个包(package)
local p = {} --p代表一个包(package)


function p.create()
function p.createUser(frame)
-- 获取标题
-- 获取标题
local name = tostring(mw.title.getCurrentTitle())
local name = tostring(mw.title.getCurrentTitle())
第19行: 第19行:
}
}
-- 报错弹出
-- 报错弹出
if(lists == nil)
then
return "什么都没获取到呢 ……"
end
if(lists.perror)
if(lists.perror)
then
then
第24行: 第28行:
end
end
-- 解析 table
-- 解析 table
local str = ""
for key, value in pairs(lists) do
for key, value in pairs(lists) do
if(type(value) == "table")
if(type(value) == "table")
第29行: 第34行:
-- lists[key]["pid"]
-- lists[key]["pid"]
-- lists[key]["pname"]
-- lists[key]["pname"]
-- 生成 html
-- 访问 API 获取页面概要文本
local api_url = main .. "/api.php?action=query&format=json&prop=extracts&exchars=20&explaintext=1&titles=" .. lists[key]["pname"]
local list_page = mw.ext.externaldata.getWebData {
url = api_url
, data = "text = $.query.pages." .. lists[key]["pid"] .. ".extract"
, format = "json"
, 'use jsonpath'
}
-- 页面名
local uname = lists[key]["pname"]
-- 用户名
-- 特判部分带下划线的名字
local utitle = lists[key]["pname"]
utitle = (string.gsub(utitle, "L Ac", "L_Ac"))
-- 获取游戏名
uname = require( 'Module:Info' ).getGameID( uname )
if(uname == nil)
then
uname = "none"
end
-- 生成卡片
str = str .. "{{玩家卡片|".. uname .."|[[" .. utitle .. "]]|" .. (string.gsub(list_page.text, "\n", " ")) .. "}}"
end
end
    end
end
return str
return frame:preprocess(str)
end
end


return p
return p

2022年8月13日 (六) 04:55的最新版本

此模块的文档可以在模块:Sort/doc创建

--Sort By Stapx Steve
--本模块包分类页面生成相关的功能

local p = {} --p代表一个包(package)

function p.createUser(frame)
	-- 获取标题
	local name = tostring(mw.title.getCurrentTitle())
	name = "分类:玩家"
	-- 获取完整链接
	local main = "https://" .. mw.uri.fullUrl( "主页").host
	-- 访问 API 获取分类列表
	local api_url = main .. "/api.php?action=query&format=json&list=categorymembers&cmlimit=max&cmtitle=" .. name
	local lists = mw.ext.externaldata.getWebData {
    	url = api_url
		, data = "pid=$.query.categorymembers[*].pageid, pname=$.query.categorymembers[*].title, perror=$.error.code"
		, format = "json"
		, 'use jsonpath'
	}
	-- 报错弹出
	if(lists == nil)
	then
		return "什么都没获取到呢 ……"
	end
	if(lists.perror)
	then
		return "请不要在非分类页面使用此方法: " .. lists.perror
	end
	-- 解析 table
	local str = ""
	for key, value in pairs(lists) do
		if(type(value) == "table")
		then
			-- lists[key]["pid"]
			-- lists[key]["pname"]
			-- 访问 API 获取页面概要文本
			local api_url = main .. "/api.php?action=query&format=json&prop=extracts&exchars=20&explaintext=1&titles=" .. lists[key]["pname"]
			local list_page = mw.ext.externaldata.getWebData {
				url = api_url
				, data = "text = $.query.pages." .. lists[key]["pid"] .. ".extract"
				, format = "json"
				, 'use jsonpath'
			}
			-- 页面名
			local uname = lists[key]["pname"]
			-- 用户名
			-- 特判部分带下划线的名字
			local utitle = lists[key]["pname"]
			utitle = (string.gsub(utitle, "L Ac", "L_Ac"))
			-- 获取游戏名
			uname = require( 'Module:Info' ).getGameID( uname )
			if(uname == nil)
			then
				uname = "none"
			end
			-- 生成卡片
			str = str .. "{{玩家卡片|".. uname .."|[[" .. utitle .. "]]|" .. (string.gsub(list_page.text, "\n", " ")) .. "}}"
		end
	end
	return frame:preprocess(str)
end

return p