5441
редагування
Admin (обговорення | внесок) Немає опису редагування |
Admin (обговорення | внесок) Немає опису редагування |
||
| Рядок 1: | Рядок 1: | ||
local p = {} | |||
local pages_to_search = { | |||
"Перший сезон", | |||
"Другий сезон", | |||
"Третій сезон", | |||
"Четвертий сезон", | |||
"П'ятий сезон", | |||
"Шостий сезон", | |||
"Сьомий сезон", | |||
"Восьмий сезон", | |||
"Дев'ятий сезон", | |||
"Get Names 01", | |||
"Get Names 02", | |||
"Get Names 03", | |||
"Get Names 04", | |||
"Get Names 05", | |||
"Get Names 06", | |||
"Get Names 07", | |||
"Get Names 08", | |||
"Get Names 09", | |||
"Women's Closed Cup I", | |||
"Women's Closed Cup II", | |||
"Men's Closed Cup I", | |||
"Men's Closed Cup II", | |||
"Combined Closed Cup I", | |||
"Combined Closed Cup II", | |||
"Score Open Battle I", | |||
"Score Open Battle II", | |||
"Mafia Closed Cup I", | |||
"Mafia Closed Cup I Online", | |||
"My Closest Circle I", | |||
"Фінал Року" | |||
} | |||
local function get_facts_section(page_title) | |||
local title = mw.title.new(page_title) | |||
if not title or not title.exists then | |||
return nil | |||
end | |||
local content = title:getContent() | |||
if not content then | |||
return nil | |||
end | |||
local section_start = mw.ustring.find(content, "==%s*[Цц]ікаві%s*[Фф]акти%s*==") | |||
if not section_start then | |||
return nil | |||
end | |||
local section_end = mw.ustring.find(content, "\n==[^=]", section_start + 1) | |||
local section_content | |||
if section_end then | |||
section_content = mw.ustring.sub(content, section_start, section_end - 1) | |||
else | |||
section_content = mw.ustring.sub(content, section_start) | |||
end | |||
return section_content | |||
end | |||
local function fact_contains_player(fact, player_name) | |||
local escaped_name = mw.ustring.gsub(player_name, "([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") | |||
local pattern1 = "%[%[" .. escaped_name .. "%]%]" | |||
local pattern2 = "%[%[" .. escaped_name .. "|[^%]]+%]%]" | |||
if mw.ustring.find(fact, pattern1) or mw.ustring.find(fact, pattern2) then | |||
return true | |||
end | |||
return false | |||
end | |||
local function extract_facts(section_content) | |||
local facts = {} | |||
for fact in mw.ustring.gmatch(section_content, "%*[^\n]+") do | |||
table.insert(facts, fact) | |||
end | |||
return facts | |||
end | |||
function p.facts(frame) | function p.facts(frame) | ||
local player_name = frame.args.player or frame.args[1] | local player_name = frame.args.player or frame.args[1] | ||
| Рядок 37: | Рядок 124: | ||
return table.concat(result_parts, "\n") | return table.concat(result_parts, "\n") | ||
end | end | ||
function p.facts_count(frame) | |||
local player_name = frame.args.player or frame.args[1] | |||
if not player_name or player_name == "" then | |||
player_name = mw.title.getCurrentTitle().text | |||
end | |||
local count = 0 | |||
for _, page_title in ipairs(pages_to_search) do | |||
local section = get_facts_section(page_title) | |||
if section then | |||
local facts = extract_facts(section) | |||
for _, fact in ipairs(facts) do | |||
if fact_contains_player(fact, player_name) then | |||
count = count + 1 | |||
end | |||
end | |||
end | |||
end | |||
return tostring(count) | |||
end | |||
return p | |||