(// Edit via Wikiplus) 标签:已被回退 |
标签:撤销 |
||
(未显示同一用户的2个中间版本) | |||
第7行: | 第7行: | ||
local function getComicData(episode) |
local function getComicData(episode) |
||
-- 去ComicData.json获取漫画数据 |
-- 去ComicData.json获取漫画数据 |
||
local comicList = mw.text.jsonDecode(mw.title |
local comicList = mw.text.jsonDecode(mw.getCurrentFrame():expandTemplate { title = '漫画信息框/ComicData.json' }) |
||
return comicList[episode] |
return comicList[episode] |
||
第14行: | 第14行: | ||
-- 用模板数据替换自动获取的数据 |
-- 用模板数据替换自动获取的数据 |
||
local data = {} |
local data = {} |
||
⚫ | |||
-- 当ComicData.json中不存在此话数据时 直接使用模板数据 防止报错 |
|||
data[k] = v |
|||
⚫ | |||
⚫ | |||
⚫ | |||
end |
end |
||
for k, v in pairs(data_from_args) do |
for k, v in pairs(data_from_args) do |
||
if v ~= '' then |
if v ~= '' then |
||
-- 当 |
-- 当模板数据为空值时 使用自动获取的数据 |
||
data[k] = v |
data[k] = v |
||
end |
end |
||
第29行: | 第26行: | ||
return data |
return data |
||
end |
end |
||
local function fillInfobox(data, episode |
local function fillInfobox(data, episode) |
||
-- 用漫画数据生成信息框 |
|||
-- 检查缺失数据 生成提示 |
|||
⚫ | |||
if args['color'] == nil then |
|||
noticetext = noticetext .. '<li>此信息框缺少背景色,请添加<code>color</code>参数。</li>' |
|||
⚫ | |||
⚫ | |||
noticetext = noticetext .. '<li>此信息框缺少微博标题,请添加<code>title_weibo</code>参数。</li>' |
|||
end |
|||
⚫ | |||
noticetext = noticetext .. '<li>此信息框缺少B漫标题,请添加<code>title_bili</code>参数。</li>' |
|||
end |
|||
if args['episode'] == nil then |
|||
noticetext = noticetext .. '<li>此信息框缺少时间线,请添加<code>episode</code>参数。</li>' |
|||
end |
|||
⚫ | |||
noticetext = noticetext .. '<li>此信息框缺少微博发布时间,请添加<code>date_weibo</code>参数。</li>' |
|||
end |
|||
⚫ | |||
noticetext = noticetext .. '<li>此信息框缺少B漫发布时间,请添加<code>date_bili</code>参数。</li>' |
|||
end |
|||
local args = { |
|||
number = data and data['number'] or ' ', |
|||
color = data and data['color'] or ' ', |
|||
⚫ | |||
--我知道这里写死很不礼貌 但是能用就懒得管了 少调一个模板榨点性能 |
|||
⚫ | |||
return '<table class="mw-collapsible mw-collapsed wikitable"><tr><th>信息框提示</th></tr><tr><td>' .. |
|||
episode = data and data['episode'] or ' ', |
|||
⚫ | |||
end |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
local frame = mw.getCurrentFrame() |
local frame = mw.getCurrentFrame() |
||
local res = '' |
|||
⚫ | |||
local noticetext = '' |
|||
for key, value in pairs(args) do |
|||
res[#res + 1] = '<br>' |
|||
text = '\n|' .. key .. '=' .. value |
|||
res[#res + 1] = frame:expandTemplate { title = 'nowiki', args = { text } } |
|||
local forcheck_args = { |
|||
color = data['color'], |
|||
title_weibo = data['title_weibo'], |
|||
title_bili = data['title_bili'], |
|||
episode = data['episode'], |
|||
date_weibo = data['date_weibo'], |
|||
date_bili = data['date_bili'], |
|||
number = episode |
|||
} |
|||
noticetext = argsCheck(forcheck_args) |
|||
end |
end |
||
res[#res + 1] = frame:expandTemplate { title = 'nowiki', args = { '}}' } } |
|||
⚫ | |||
⚫ | |||
--return mw.getCurrentFrame():expandTemplate { title = 'Infobox', args = args } |
|||
-- 添加缺失数据提示 |
|||
if noticetext ~= '' then |
|||
res = res .. noticetext |
|||
end |
|||
⚫ | |||
end |
end |
||
第92行: | 第58行: | ||
local episode = 1 |
local episode = 1 |
||
-- 获取话数 |
-- 获取话数 |
||
if |
if args[1] ~= nil then |
||
episode = tonumber(args[1]) |
episode = tonumber(args[1]) |
||
end |
end |
||
if |
if args['number'] ~= nil then |
||
episode = tonumber(args['number']) |
episode = tonumber(args['number']) |
||
end |
end |
||
--模板数据齐全时直接使用模板数据 |
|||
if args['color'] ~= nil and args['color'] ~= nil and args['title_weibo'] ~= nil and args['title_bili'] ~= nil and args['episode'] ~= nil and args['date_weibo'] ~= nil and args['date_bili'] then |
|||
return fillInfobox(args, episode,1) |
|||
end |
|||
--获取自动补全用的数据 |
|||
local episodeData_autoFill = getComicData(episode) |
local episodeData_autoFill = getComicData(episode) |
||
--合并数据 |
|||
local episodeData = margeData(episodeData_autoFill, args) |
local episodeData = margeData(episodeData_autoFill, args) |
||
--生成信息框 |
|||
return fillInfobox(episodeData, episode |
return fillInfobox(episodeData, episode) |
||
end |
end |
||
2023年9月2日 (六) 21:12的最新版本
local p = {}
local getArgs = require('Module:Arguments').getArgs
function p.main(frame)
local args = getArgs(frame)
local function getComicData(episode)
-- 去ComicData.json获取漫画数据
local comicList = mw.text.jsonDecode(mw.getCurrentFrame():expandTemplate { title = '漫画信息框/ComicData.json' })
return comicList[episode]
end
local function margeData(data_from_json, data_from_args)
-- 用模板数据替换自动获取的数据
local data = {}
for k, v in pairs(data_from_json) do
data[k] = v
end
for k, v in pairs(data_from_args) do
if v ~= '' then
-- 当模板数据为空值时 使用自动获取的数据
data[k] = v
end
end
return data
end
local function fillInfobox(data, episode)
-- 用漫画数据生成信息框
local args = {
number = data and data['number'] or ' ',
color = data and data['color'] or ' ',
title_weibo = data and data['title_weibo'] or ' ',
title_bili = data and data['title_bili'] or ' ',
episode = data and data['episode'] or ' ',
date_weibo = data and data['date_weibo'] or ' ',
date_bili = data and data['date_bili'] or ' ',
number = data and episode or ' '
}
local res = {}
local text = ''
local frame = mw.getCurrentFrame()
res[#res + 1] = frame:expandTemplate { title = 'nowiki', args = { '{{漫画信息框' } }
for key, value in pairs(args) do
res[#res + 1] = '<br>'
text = '\n|' .. key .. '=' .. value
res[#res + 1] = frame:expandTemplate { title = 'nowiki', args = { text } }
end
res[#res + 1] = frame:expandTemplate { title = 'nowiki', args = { '}}' } }
return table.concat(res)
--return mw.getCurrentFrame():expandTemplate { title = 'Infobox', args = args }
end
-- 默认输出第一话的信息框
local episode = 1
-- 获取话数
if args[1] ~= nil then
episode = tonumber(args[1])
end
if args['number'] ~= nil then
episode = tonumber(args['number'])
end
local episodeData_autoFill = getComicData(episode)
local episodeData = margeData(episodeData_autoFill, args)
return fillInfobox(episodeData, episode)
end
return p