Site Notice

hello, world

Difference between revisions of "Module:SongsInAnime"

From Project-EPB Commons
([InPageEdit] 没有编辑摘要)
m ([InPageEdit] 没有编辑摘要)
 
(6 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 song = k
+
     local time = k
     local time = songs[k]['time'] or '未知时间'
+
     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 k, v in pairs(songsTable) do
+
  -- 遍历剧集
     local thisEp = songsTable[k]
+
   for k1, v1 in pairs(songsTable) do
     if util.hasValue(thisEp, song) then
+
     local thisEp = k1 -- 本次遍历的剧集名称
      table.insert(episodes, thisEp)
+
    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
Line 66: Line 85:
 
     return '注意:没有动画剧集使用音乐[[' .. song .. ']]。'
 
     return '注意:没有动画剧集使用音乐[[' .. song .. ']]。'
 
   end
 
   end
 +
 
   -- 创建列表
 
   -- 创建列表
   local text = '<ul class="songs-table animes-have-song">'
+
   local text =
   for k, v in pairs(episodes) do
+
    '<i class="songs-table-description">音乐《[[' .. song .. ']]》出现在以下动画剧集中:</i><ul class="songs-table animes-have-song">'
     local episode = episodes[k]
+
  -- 遍历表
    local time = songsTable[episode][song]['time']
+
   for k1, v1 in pairs(episodes) do
    local description = songsTable[episode][song]['description']
+
     local episode = k1 -- 本次遍历的剧集
    text =
+
    -- 遍历时间
      text ..
+
    for k2, v2 in pairs(episodes[episode]) do
      '<li class="episode one-line"><b class="time-appear">' ..
+
      local time = k2 -- 本次遍历的时间
        time ..
+
      local description = episodes[episode][k2]['description']
          '</b> [[' ..
+
      local endtime = episodes[episode][k2]['end'] or ''
            episode ..
+
      if endtime ~= '' then
              '|<span class="episode-name">' ..
+
        time = time .. '-' .. endtime
                episode .. '</span>]] <i class="song-description">' .. description .. '</i></li>'
+
      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

Edit Module:SongsInAnime/doc

动画《国王》使用了以下音乐: 音乐《All Of You Is All Of Me》出现在以下动画剧集中:
-- 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