Site Notice
hello, world
Difference between revisions of "Module:SongsInAnime"
From Project-EPB Commons
m ([InPageEdit] 没有编辑摘要) |
|||
(3 intermediate revisions by the same user not shown) | |||
Line 27: | Line 27: | ||
end | end | ||
-- 创建列表 | -- 创建列表 | ||
− | local text = '<ul class="songs-table songs-in-anime">' | + | local text = |
+ | '<i class="songs-table-description">动画《[[' .. episode .. ']]》使用了以下音乐:</i><ul class="songs-table songs-in-anime">' | ||
for k, v in pairs(songs) do | for k, v in pairs(songs) do | ||
− | local | + | local time = k |
− | local | + | local endtime = songs[k]['endtime'] or '' |
+ | if endtime ~= '' then | ||
+ | time = time .. '-' .. endtime | ||
+ | end | ||
+ | local song = songs[k]['song'] | ||
local description = songs[k]['description'] or '' | local description = songs[k]['description'] or '' | ||
text = | text = | ||
Line 54: | Line 59: | ||
return '[[Module:Songs]]模块错误:未指定音乐名。' | return '[[Module:Songs]]模块错误:未指定音乐名。' | ||
end | end | ||
− | -- | + | -- 初始化表 |
local episodes = {} | local episodes = {} | ||
− | for | + | -- 遍历剧集 |
− | local thisEp = songsTable[ | + | for k1, v1 in pairs(songsTable) do |
− | + | local thisEp = k1 -- 本次遍历的剧集名称 | |
− | + | local thisEpTable = songsTable[k1] -- 本次遍历的剧集的表 | |
− | + | -- 遍历时间节点 | |
− | + | for k2, v2 in pairs(thisEpTable) do | |
− | + | local thisTime = k2 -- 本次遍历的时间 | |
+ | local thisTimeTable = thisEpTable[k2] -- 本次遍历的时间的表 | ||
+ | local thisSong = thisTimeTable['song'] -- 本次遍历的时间的音乐名 | ||
+ | -- 如果该时间节点的音乐名就是比对的音乐名 | ||
+ | if thisSong == song then | ||
+ | -- 本集的表若不存在,先建立表 | ||
+ | if type(episodes[thisEp]) == 'nil' then | ||
+ | episodes[thisEp] = {} | ||
+ | end | ||
+ | -- 将本时间节点的表插进表 | ||
+ | episodes[thisEp][thisTime] = thisTimeTable | ||
+ | end | ||
end | end | ||
end | end | ||
-- 没有剧集使用该音乐 | -- 没有剧集使用该音乐 | ||
− | |||
− | |||
if util.tableLength(episodes) < 1 then | if util.tableLength(episodes) < 1 then | ||
return '注意:没有动画剧集使用音乐[[' .. song .. ']]。' | return '注意:没有动画剧集使用音乐[[' .. song .. ']]。' | ||
end | end | ||
+ | |||
-- 创建列表 | -- 创建列表 | ||
− | local text = '<ul class="songs-table animes-have-song">' | + | local text = |
− | for | + | '<i class="songs-table-description">音乐《[[' .. song .. ']]》出现在以下动画剧集中:</i><ul class="songs-table animes-have-song">' |
− | local episode = episodes[ | + | -- 遍历表 |
− | + | for k1, v1 in pairs(episodes) do | |
− | + | local episode = k1 -- 本次遍历的剧集 | |
− | + | -- 遍历时间 | |
− | + | for k2, v2 in pairs(episodes[episode]) do | |
− | + | local time = k2 -- 本次遍历的时间 | |
− | + | local description = episodes[episode][k2]['description'] | |
− | + | local endtime = episodes[episode][k2]['end'] or '' | |
− | + | if endtime ~= '' then | |
− | + | time = time .. '-' .. endtime | |
− | + | end | |
+ | text = | ||
+ | text .. | ||
+ | '<li class="episode one-line">[[' .. | ||
+ | episode .. | ||
+ | '|<b class="episode-name">' .. | ||
+ | episode .. | ||
+ | '</b>]]' .. | ||
+ | ' ' .. | ||
+ | '<span class="time-appear">' .. | ||
+ | time .. '</span> <i class="song-description">' .. description .. '</i></li>' | ||
+ | end | ||
end | end | ||
-- 结束,返回列表 | -- 结束,返回列表 |
Latest revision as of 00:16, 13 April 2020
动画《国王》使用了以下音乐:
- 14:00 placeholder
- 16:09 All Of You Is All Of Me 空白宣誓就任人类种国王时,空在全人类种面前发表演讲的BGM。
- 国王 16:09-19:00 空白宣誓就任人类种国王时,空在全人类种面前发表演讲的BGM。
- 一步 18:40-19:46 空白与吉普莉尔的实体化文字接龙游戏中,进行到<暗弱→库仑力>的最终决战环节时的BGM。
-- Module Name: 动画音乐表
-- Author: 机智的小鱼君
-- Description:
--- 动画出现的全部音乐都可以使用这个模块查询,
--- 完善歌曲信息请前往子页面[[Module:SongsInAnime/table]]
local p = {}
local getArgs = require('Module:Arguments').getArgs
local util = require('Module:Util')
local songsTable = require('Module:SongsInAnime/table')
-- 某集动画中的全部歌曲
function p.anime(frame)
local args = getArgs(frame)
local episode = args['episode'] or args[1]
-- 参数错误
if episode == nil then
return '[[Module:Songs]]模块错误:未指定剧集。'
end
local songs = songsTable[episode]
-- 没有该集信息
if songs == nil then
return '注意:没有找到动画剧集[[' .. episode .. ']]!'
end
-- 没有音乐
if util.tableLength(songs) < 1 then
return '注意:动画[[' .. episode .. ']]中未找到相关音乐!'
end
-- 创建列表
local text =
'<i class="songs-table-description">动画《[[' .. episode .. ']]》使用了以下音乐:</i><ul class="songs-table songs-in-anime">'
for k, v in pairs(songs) do
local time = k
local endtime = songs[k]['endtime'] or ''
if endtime ~= '' then
time = time .. '-' .. endtime
end
local song = songs[k]['song']
local description = songs[k]['description'] or ''
text =
text ..
'<li class="song one-line"><b class="time-appear">' ..
time ..
'</b> [[' ..
song ..
'|<span class="song-name">' ..
song .. '</span>]] <i class="song-description">' .. description .. '</i></li>'
end
-- 结束,返回列表
text = text .. '</ul>'
return text
end
-- 出现某歌曲的动画剧集
function p.song(frame)
local args = getArgs(frame)
local song = args['song'] or args[1]
-- 参数错误
if song == nil then
return '[[Module:Songs]]模块错误:未指定音乐名。'
end
-- 初始化表
local episodes = {}
-- 遍历剧集
for k1, v1 in pairs(songsTable) do
local thisEp = k1 -- 本次遍历的剧集名称
local thisEpTable = songsTable[k1] -- 本次遍历的剧集的表
-- 遍历时间节点
for k2, v2 in pairs(thisEpTable) do
local thisTime = k2 -- 本次遍历的时间
local thisTimeTable = thisEpTable[k2] -- 本次遍历的时间的表
local thisSong = thisTimeTable['song'] -- 本次遍历的时间的音乐名
-- 如果该时间节点的音乐名就是比对的音乐名
if thisSong == song then
-- 本集的表若不存在,先建立表
if type(episodes[thisEp]) == 'nil' then
episodes[thisEp] = {}
end
-- 将本时间节点的表插进表
episodes[thisEp][thisTime] = thisTimeTable
end
end
end
-- 没有剧集使用该音乐
if util.tableLength(episodes) < 1 then
return '注意:没有动画剧集使用音乐[[' .. song .. ']]。'
end
-- 创建列表
local text =
'<i class="songs-table-description">音乐《[[' .. song .. ']]》出现在以下动画剧集中:</i><ul class="songs-table animes-have-song">'
-- 遍历表
for k1, v1 in pairs(episodes) do
local episode = k1 -- 本次遍历的剧集
-- 遍历时间
for k2, v2 in pairs(episodes[episode]) do
local time = k2 -- 本次遍历的时间
local description = episodes[episode][k2]['description']
local endtime = episodes[episode][k2]['end'] or ''
if endtime ~= '' then
time = time .. '-' .. endtime
end
text =
text ..
'<li class="episode one-line">[[' ..
episode ..
'|<b class="episode-name">' ..
episode ..
'</b>]]' ..
' ' ..
'<span class="time-appear">' ..
time .. '</span> <i class="song-description">' .. description .. '</i></li>'
end
end
-- 结束,返回列表
text = text .. '</ul>'
return text
end
function p.main()
return '[[Module:Songs]]模块说明:\n* 使用<code>anime</code>显示某集动画中的全部歌曲。\n* 使用<code>song</code>显示出现某歌曲的动画剧集。'
end
return p