Module:PageSummary:修订间差异
武外梗百科 爱国好学自强图新的百科全书
更多操作
无编辑摘要 |
无编辑摘要 |
||
| 第1行: | 第1行: | ||
local p = {} | local p = {} | ||
local function stripImages(text) | local function stripImages(text) | ||
if not text or text == "" then return "" end | if not text or text == "" then return "" end | ||
text = | -- 模式全部重新写,避免复制隐藏字符 | ||
text = | text = string.gsub(text, "%[%[(文件|Image|图像):", "[[File:") | ||
text = string.gsub(text, "%[%[(分类|Category):", "[[Category:") | |||
local out = {} | local out = {} | ||
| 第15行: | 第15行: | ||
if text:byte(i) == 91 and text:byte(i+1) == 91 then | if text:byte(i) == 91 and text:byte(i+1) == 91 then | ||
local chunk = text:sub(i, i+15) | local chunk = text:sub(i, i+15) | ||
if chunk: | if chunk:find("^%[%[File:") or chunk:find("^%[%[Category:") then | ||
local depth = 1 | local depth = 1 | ||
local j = i + 2 | local j = i + 2 | ||
| 第44行: | 第44行: | ||
end | end | ||
local function cleanFinal(text) | local function cleanFinal(text) | ||
if not text or text == "" then return "" end | if not text or text == "" then return "" end | ||
text = | -- 所有模式都重新手写,使用 string.gsub(模式是纯 ASCII) | ||
text = | text = string.gsub(text, "{{[^{}]*}}", "") | ||
text = | text = string.gsub(text, "<ref.-</?ref[^>]*>", "") | ||
text = | text = string.gsub(text, "<!%-%-.-%-%->", "") | ||
text = | text = string.gsub(text, "\n==+[^=]+==+", " ") | ||
text = | text = string.gsub(text, "\n%s*[*#:;]+", " ") | ||
text = | text = string.gsub(text, "%s*\n%s*", " ") | ||
text = string.gsub(text, "%s+", " ") | |||
return mw.text.trim(text) | return mw.text.trim(text) | ||
| 第69行: | 第69行: | ||
if not content or content == "" then return "" end | if not content or content == "" then return "" end | ||
-- | -- 简单清洗 content,避免传入 gsub 的文本有问题 | ||
content = | content = string.gsub(content, "[\0-\31\127]", "") -- 移除控制字符 | ||
local rawExcerpt = mw.ustring.sub(content, 1, 800) or "" | local rawExcerpt = mw.ustring.sub(content, 1, 800) or "" | ||
-- | -- 提取第一张图片(使用 find + 手动截取) | ||
local firstImage = nil | local firstImage = nil | ||
local prefixes = {"File:", "文件:"} | local prefixes = {"File:", "文件:"} | ||
| 第88行: | 第86行: | ||
local candidate = mw.ustring.sub(rawExcerpt, start + #pattern + 1, boundary - 1) | local candidate = mw.ustring.sub(rawExcerpt, start + #pattern + 1, boundary - 1) | ||
candidate = mw.text.trim(candidate) | candidate = mw.text.trim(candidate) | ||
if candidate ~= "" and mw.ustring.find(candidate, "%.") then | if candidate ~= "" and mw.ustring.find(candidate, "%.") then | ||
firstImage = prefix .. candidate | firstImage = prefix .. candidate | ||
break | break | ||
| 第99行: | 第97行: | ||
local cleanText = cleanFinal(step1) or "" | local cleanText = cleanFinal(step1) or "" | ||
local targetLen = 120 | local targetLen = 120 | ||
local summary = cleanText | local summary = cleanText | ||
| 第127行: | 第124行: | ||
end | end | ||
local container = mw.html.create('div') | local container = mw.html.create('div') | ||
:css('margin-bottom', '25px') | :css('margin-bottom', '25px') | ||