• Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

Module:BanG Dream! 出演列表

萌娘百科,万物皆可萌的百科全书!转载请标注来源页面的网页链接,并声明引自萌娘百科。内容不可商用。
跳转到导航 跳转到搜索
Template-info.svg 模块文档  [查看] [编辑] [历史] [刷新]

工作原理

默认调用Template:BanG Dream!/Icon来组成出演列表。如果需要gbp icon可以使用icon_style=gbp来切换成Template:BanG Dream!/GBPIcon

功能上基本兼容原Template:BanG Dream! 出演列表

使用方法

单团模式

当传入的参数含有任一乐队名称时以单团模式工作,角色名可以按任意顺序输入,会按默认顺序输出列表:

{{#invoke:BanG Dream! 出演列表|main|乐队|角色名1|角色名2|......|角色名5|其他参数}}

例如:

{{#invoke:BanG Dream! 出演列表|main|Poppin'Party|ksm|ars|saya|rimi|tae}}

展示: 10kv-ppp-kasumi 副本.png10kv-ppp-tae 副本.png10kv-ppp-rimi 副本.png10kv-ppp-saaya 副本.png10kv-ppp-arisa 副本.png


可以使用position参数指定角色顺序,例如使用live站位顺序:

{{#invoke:BanG Dream! 出演列表|main|Poppin'Party|ksm|ars|saya|rimi|tae|position=live}}

展示: 10kv-ppp-rimi 副本.png10kv-ppp-saaya 副本.png10kv-ppp-kasumi 副本.png10kv-ppp-arisa 副本.png10kv-ppp-tae 副本.png

目前只支持默认和live站位两种顺序。


若只有某几人出演,依然按照顺序来排列,中间留空:

{{#invoke:BanG Dream! 出演列表|main|Poppin'Party|ksm|ars|tae}}

展示: 10kv-ppp-kasumi 副本.png10kv-ppp-tae 副本.png10kv-ppp-rimi 副本.png10kv-ppp-saaya 副本.png10kv-ppp-arisa 副本.png


此外支持附加声优名称和链接,使用with_artist参数,此时中间不会留空:

{{#invoke:BanG Dream! 出演列表|main|Poppin'Party|ksm|ars|tae|with_artist=true}}

展示: 10kv-ppp-kasumi 副本.png爱美10kv-ppp-tae 副本.png大冢纱英10kv-ppp-arisa 副本.png伊藤彩沙


全体模式

当传入参数不含任意乐队名称时,按全体模式工作。角色名可以按任意顺序输入,会按默认顺序输出列表,此时会自动添加声优名称链接:

{{#invoke:BanG Dream! 出演列表|main|角色名1|角色名2|......|角色名n|其他参数}}

例如:

{{#invoke:BanG Dream! 出演列表|main|ksm|ran|aya|ykn|kkr|layer|msr|tmr}}

展示: 10kv-ppp-kasumi 副本.png爱美10kv-ag-ran 副本.png佐仓绫音10kv-pp-aya 副本.png前岛亚美10kv-rose-yukina 副本.png相羽爱奈10kv-hhw-kokoro 副本.png伊藤美来10kv-mf-mashiro 副本.png进藤天音10kv-ras-layer 副本.pngRaychell10kv-mygo-tomori 副本.png羊宫妃那

如果有必要的话也可以支持完全按照传入参数的顺序来排列。


如果不想附加声优名称和链接,使用with_artist=false:

{{#invoke:BanG Dream! 出演列表|main|ksm|ran|aya|ykn|kkr|layer|msr|tmr|with_artist=false}}

展示: 10kv-ppp-kasumi 副本.png10kv-ag-ran 副本.png10kv-pp-aya 副本.png10kv-rose-yukina 副本.png10kv-hhw-kokoro 副本.png10kv-mf-mashiro 副本.png10kv-ras-layer 副本.png10kv-mygo-tomori 副本.png


目前还不支持远藤祐里香或明坂聪美出演的情况,后续会添加支持。


参数对照

除角色和乐队名以外的参数:

size: 可选参数,指定icon大小,默认为30。

icon_style: 可选参数,不传值时使用默认图标,值为gbp时使用gbp图标。

with_artist: 可选参数,值为true时在icon后添加声优名称和链接。

position: 可选参数,不传值时使用默认顺序,值为live时使用live站位顺序。


角色和乐队名均为匿名参数,都支持一些缩写和昵称,在下表列出。

乐队 参数 角色 参数 效果 角色 参数 效果 角色 参数 效果 角色 参数 效果 角色 参数 效果
Poppin'Party Poppin'Party
popipa
ppp
户山香澄 kasumi
ksm
10kv-ppp-kasumi 副本.png 花园多惠 tae 10kv-ppp-tae 副本.png 牛込里美 rimi 10kv-ppp-rimi 副本.png 山吹沙绫 saaya
saya
10kv-ppp-saaya 副本.png 市谷有咲 arisa
ars
10kv-ppp-arisa 副本.png
Afterglow Afterglow
ag
美竹兰 ran 10kv-ag-ran 副本.png 青叶摩卡 moka
moca
10kv-ag-moca 副本.png 上原绯玛丽 himari
hmr
10kv-ag-himari 副本.png 宇田川巴 tomoe 10kv-ag-tomoe 副本.png 羽泽鸫 tsugumi
tsugu
10kv-ag-tsugumi 副本.png
Pastel*Palettes Pastel*Palettes
pp
丸山彩 aya 10kv-pp-aya 副本.png 冰川日菜 hina 10kv-pp-hina 副本.png 白鹭千圣 chisato
cst
10kv-pp-chisato 副本.png 大和麻弥 maya 10kv-pp-maya 副本.png 若宫伊芙 eve 10kv-pp-eve 副本.png
Roselia Roselia
roselia
凑友希那 yukina
ykn
10kv-rose-yukina 副本.png 冰川纱夜 sayo 10kv-rose-sayo 副本.png 今井莉莎 lisa 10kv-rose-lisa 副本.png 宇田川亚子 ako 10kv-rose-ako 副本.png 白金燐子 rinko
rinrin
10kv-rose-rinko 副本.png
Hello, Happy World! Hello, Happy World!
hhw
弦卷心 kokoro
kkr
10kv-hhw-kokoro 副本.png 濑田薰 kaoru 10kv-hhw-kaoru 副本.png 北泽育美 hagumi
hgm
10kv-hhw-hagumi 副本.png 松原花音 kanon 10kv-hhw-kanon 副本.png 奥泽美咲/米歇爾 misaki
msk
10kv-hhw-michelle 副本.png
Morfonica Morfonica
monica
仓田真白 mashiro
msr
10kv-mf-mashiro 副本.png 桐谷透子 touko
toko
10kv-mf-touko 副本.png 广町七深 nanami
nnmm
10kv-mf-nanami 副本.png 二叶筑紫 tsukushi
tks
10kv-mf-tsukushi 副本.png 八潮瑠唯 rui 10kv-mf-rui 副本.png
RAISE A SUILEN RAISE A SUILEN
ras
和奏瑞依 layer
rei
10kv-ras-layer 副本.png 朝日六花 lock
rokka
10kv-ras-lock 副本.png 佐藤益木 masking
masuki
10kv-ras-masking 副本.png PAREO pareo
reona
10kv-ras-pareo 副本.png CHU² chuchu
chiyu
10kv-ras-chuchu 副本.png
MyGO!!!!! MyGO!!!!!
mygo
go
高松灯 tomori
tmr
10kv-mygo-tomori 副本.png 千早爱音 anon
ano
10kv-mygo-anon 副本.png 要乐奈 rana 10kv-mygo-raana 副本.png 长崎爽世 soyo 10kv-mygo-soyo 副本.png 椎名立希 taki 10kv-mygo-taki 副本.png
Ave Mujica Ave Mujica
mujica
三角初华 uika
Dororis
10kv-mjc-uika 副本.png 若叶睦 mutsumi
mtm
Mortis
10kv-mjc-mutsumi 副本.png 八幡海铃 umiri
umr
Timoris
10kv-mjc-umiri 副本.png 祐天寺若麦 nyamu
Amoris
10kv-mjc-nyamu 副本.png 丰川祥子 sakiko
skk
Oblivionis
10kv-mjc-sakiko 副本.png
梦限大MewType 梦限大MewType
yumemita
ymmt
仲町阿拉蕾 arale
arl
10kv-ymmt-arale 副本.png 宫永野乃花 nonoka
nnk
10kv-ymmt-nonoka 副本.png 峰月律 ritsu 10kv-ymmt-ritsu 副本.png 藤都子 miyako 10kv-ymmt-miyako 副本.png 千石由乃 yuno 10kv-ymmt-yuno 副本.png
local getArgs = require('Module:Arguments').getArgs

local p = {}

local icon_template = "{{BanG Dream!/Icon|#char|#size}}"

local gbp_icon_template = "{{BanG Dream!/GBPIcon|#char|#size}}"

-- 声优映射表只接受角色全名
local artist_map = {
    ["kasumi"] = "[[爱美(声优)|爱美]]",
    ["tae"] = "[[大冢纱英]]",
    ["rimi"] = "[[西本里美]]",
    ["saaya"] = "[[大桥彩香]]",
    ["arisa"] = "[[伊藤彩沙]]",
    ["ran"] = "[[佐仓绫音]]",
    ["moka"] = "[[三泽纱千香]]",
    ["himari"] = "[[加藤英美里]]",
    ["tomoe"] = "[[日笠阳子]]",
    ["tsugumi"] = "[[金元寿子]]",
    ["aya"] = "[[前岛亚美]]",
    ["hina"] = "[[小泽亚李]]",
    ["chisato"] = "[[上坂堇]]",
    ["maya"] = "[[中上育实]]",
    ["eve"] = "[[秦佐和子]]",
    ["yukina"] = "[[相羽爱奈]]",
    ["sayo"] = "[[工藤晴香]]",
    ["lisa"] = "[[中岛由贵]]",
    ["lisa0"] = "[[远藤祐里香]]",
    ["ako"] = "[[樱川惠]]",
    ["rinko"] = "[[志崎桦音]]",
    ["rinko0"] = "[[明坂聪美]]",
    ["kokoro"] = "[[伊藤美来]]",
    ["kaoru"] = "[[田所梓]]",
    ["hagumi"] = "[[吉田有里]]",
    ["kanon"] = "[[丰田萌绘]]",
    ["misaki"] = "[[黑泽朋世]]",
    ["mashiro"] = "[[进藤天音]]",
    ["touko"] = "[[直田姬奈]]",
    ["nanami"] = "[[西尾夕香]]",
    ["tsukushi"] = "[[Mika(声优)|mika]]",
    ["rui"] = "[[Ayasa]]",
    ["layer"] = "[[Raychell]]",
    ["lock"] = "[[小原莉子]]",
    ["masking"] = "[[夏芽]]",
    ["pareo"] = "[[仓知玲凤]]",
    ["chuchu"] = "[[纺木吏佐]]",
    ["tomori"] = "[[羊宫妃那]]",
    ["anon"] = "[[立石凛]]",
    ["rana"] = "[[青木阳菜]]",
    ["soyo"] = "[[小日向美香]]",
    ["taki"] = "[[林鼓子]]",
    ["uika"] = "[[佐佐木李子]]",
    ["mutsumi"] = "[[渡濑结月]]",
    ["umiri"] = "[[冈田梦以]]",
    ["nyamu"] = "[[米泽茜]]",
    ["sakiko"] = "[[高尾奏音]]",
    ["arale"] = "[[仲町阿拉蕾]]",
    ["nonoka"] = "[[宫永野乃花]]",
    ["ritsu"] = "[[峰月律]]",
    ["miyako"] = "[[藤都子]]",
    ["yuno"] = "[[千石由乃]]",
}

-- 映射乐队名到全名
local band_nickname_map = {
    ["ppp"] = "Poppin'Party",
    ["popipa"] = "Poppin'Party",
    ["Poppin'Party"] = "Poppin'Party",
    ["ag"] = "Afterglow",
    ["Afterglow"] = "Afterglow",
    ["pp"] = "Pastel*Palettes",
    ["Pastel*Palettes"] = "Pastel*Palettes",
    ["roselia"] = "Roselia",
    ["Roselia"] = "Roselia",
    ["hhw"] = "Hello, Happy World!",
    ["Hello, Happy World!"] = "Hello, Happy World!",
    ["mf"] = "Morfonica",
    ["monica"] = "Morfonica",
    ["Morfonica"] = "Morfonica",
    ["ras"] = "RAISE A SUILEN",
    ["RAISE A SUILEN"] = "RAISE A SUILEN",
    ["go"] = "MyGO!!!!!",
    ["mygo"] = "MyGO!!!!!",
    ["mygoca"] = "MyGO!!!!!", -- 兼容mygo角色出演模板
    ["MyGO!!!!!"] = "MyGO!!!!!",
    ["mujica"] = "Ave Mujica",
    ["Ave Mujica"] = "Ave Mujica",
    ["ymmt"] = "梦限大MewType",
    ["yumemita"] = "梦限大MewType",
    ["梦限大MewType"] = "梦限大MewType",
}

-- 映射角色名到全名
local character_nickname_map = {
    ["ksm"] = "kasumi",
    ["kasumi"] = "kasumi",
    ["ars"] = "arisa",
    ["arisa"] = "arisa",
    ["rimi"] = "rimi",
    ["saya"] = "saaya",
    ["saaya"] = "saaya",
    ["tae"] = "tae",
    ["ran"] = "ran",
    ["moca"] = "moka",
    ["moka"] = "moka",
    ["hmr"] = "himari",
    ["himari"] = "himari",
    ["tomoe"] = "tomoe",
    ["tsugu"] = "tsugumi",
    ["tsugumi"] = "tsugumi",
    ["aya"] = "aya",
    ["hina"] = "hina",
    ["cst"] = "chisato",
    ["chisato"] = "chisato",
    ["maya"] = "maya",
    ["eve"] = "eve",
    ["ykn"] = "yukina",
    ["yukina"] = "yukina",
    ["sayo"] = "sayo",
    ["lisa"] = "lisa",
    ["ako"] = "ako",
    ["rinrin"] = "rinko",
    ["rinko"] = "rinko",
    ["kkr"] = "kokoro",
    ["kokoro"] = "kokoro",
    ["kaoru"] = "kaoru",
    ["hgm"] = "hagumi",
    ["hagumi"] = "hagumi",
    ["kanon"] = "kanon",
    ["msk"] = "misaki",
    ["misaki"] = "misaki",
    ["msr"] = "mashiro",
    ["mashiro"] = "mashiro",
    ["toko"] = "touko",
    ["touko"] = "touko",
    ["nnm"] = "nanami",
    ["nanami"] = "nanami",
    ["tks"] = "tsukushi",
    ["tsukushi"] = "tsukushi",
    ["rui"] = "rui",
    ["rei"] = "layer",
    ["layer"] = "layer",
    ["rokka"] = "lock",
    ["lock"] = "lock",
    ["masuki"] = "masking",
    ["masking"] = "masking",
    ["reona"] = "pareo",
    ["pareo"] = "pareo",
    ["chiyu"] = "chuchu",
    ["chuchu"] = "chuchu",
    ["tmr"] = "tomori",
    ["tomori"] = "tomori",
    ["ano"] = "anon",
    ["anon"] = "anon",
    ["rana"] = "rana",
    ["soyo"] = "soyo",
    ["taki"] = "taki",
    ["Doloris"] = "uika",
    ["uika"] = "uika",
    ["Mortis"] = "mutsumi",
    ["mtm"] = "mutsumi",
    ["mutsumi"] = "mutsumi",
    ["Timoris"] = "umiri",
    ["umr"] = "umiri",
    ["umiri"] = "umiri",
    ["Amoris"] = "nyamu",
    ["nyamu"] = "nyamu",
    ["skk"] = "sakiko",
    ["Oblivionis"] = "sakiko",
    ["sakiko"] = "sakiko",
    ["arl"] = "arale",
    ["arale"] = "arale",
    ["nnk"] = "nonoka",
    ["nonoka"] = "nonoka",
    ["ritsu"] = "ritsu",
    ["miyako"] = "miyako",
    ["yuno"] = "yuno",
}

local band_order = {
    "Poppin'Party",
    "Afterglow",
    "Pastel*Palettes",
    "Roselia",
    "Hello, Happy World!",
    "Morfonica",
    "RAISE A SUILEN",
    "MyGO!!!!!",
    "Ave Mujica",
    "梦限大MewType",
}

local live_position_map = {
    ["Poppin'Party"] = {"rimi", "saaya", "kasumi", "arisa", "tae"},
    ["Afterglow"] = {"himari", "tsugumi", "ran", "tomoe", "moka"},
    ["Pastel*Palettes"] = {"chisato", "eve", "aya", "maya", "hina"},
    ["Roselia"] = {"lisa", "rinko", "yukina", "ako", "sayo"},
    ["Hello, Happy World!"] = {"hagumi", "misaki", "kokoro", "kanon", "kaoru"},
    ["Morfonica"] = {"rui", "nanami", "mashiro", "tsukushi", "touko"},
    ["RAISE A SUILEN"] = {"pareo", "masking", "layer", "chuchu", "lock"},
    ["MyGO!!!!!"] = {"anon", "soyo", "tomori", "taki", "rana"},
    ["Ave Mujica"] = {"sakiko", "umiri", "uika", "nyamu", "mutsumi"},
    ["梦限大MewType"] = {"ritsu", "yuno", "arale", "miyako", "nonoka"},
}

local default_position_map = {
    ["Poppin'Party"] = {"kasumi", "tae", "rimi", "saaya", "arisa"},
    ["Afterglow"] = {"ran", "moka", "himari", "tomoe", "tsugumi"},
    ["Pastel*Palettes"] = {"aya", "hina", "chisato", "maya", "eve"},
    ["Roselia"] = {"yukina", "sayo", "lisa", "ako", "rinko"},
    ["Hello, Happy World!"] = {"kokoro", "kaoru", "hagumi", "kanon", "misaki"},
    ["Morfonica"] = {"mashiro", "touko", "nanami", "tsukushi", "rui"},
    ["RAISE A SUILEN"] = {"layer", "lock", "masking", "pareo", "chuchu"},
    ["MyGO!!!!!"] = {"tomori", "anon", "rana", "soyo", "taki"},
    ["Ave Mujica"] = {"uika", "mutsumi", "umiri", "nyamu", "sakiko"},
    ["梦限大MewType"] = {"arale", "nonoka", "ritsu", "miyako", "yuno"},
}

function p.get_position_list(position, band)
    -- 支持默认顺序或者live站位顺序
    if (position == "live") then
        return live_position_map[band]
    end
    return default_position_map[band]
end

function p.make_wikitext(args)
    local band = nil
    local size = args["size"] or 30
    local icon_style = args["icon_style"]
    local icon_template_with_size = string.gsub(icon_style == "gbp" and gbp_icon_template or icon_template, "#size", size)
    local position = args["position"]
    local char_map = {}
    for k, v in pairs(args) do
        if (type(k) == "number") then
            if (band_nickname_map[v] ~= nil) then
                band = band_nickname_map[v]
            elseif (character_nickname_map[v] ~= nil) then
                char_map[character_nickname_map[v]] = 1
            end
        end
    end
    local with_artist = args["with_artist"]
    if (with_artist ~= nil) then
        with_artist = with_artist == "true"
    end
    if (band == nil and with_artist == nil) then
        -- 兼容现有模板,全体模式默认添加声优名称链接
        with_artist = true
    end
    local wikitext = ""
    for _, current_band in pairs(band_order) do
        local position_list = default_position_map[current_band]
        if (band ~= nil and band ~= current_band) then
            position_list = {}
        elseif (band ~= nil and band == current_band) then
            position_list = p.get_position_list(position, band)
        end
        for __, char in pairs(position_list) do
            local char_wikitext = string.gsub(icon_template_with_size, "#char", char) .. (with_artist and artist_map[char] or "")
            if (char_map[char] ~= nil) then
                wikitext = wikitext .. char_wikitext
            elseif (band ~= nil and not with_artist) then
                wikitext = wikitext .. "{{0|" .. char_wikitext .. "}}"
            end
        end
    end
    return wikitext
end

function p.main(frame)
    local args = getArgs(frame)
    return frame:preprocess(p.make_wikitext(args))
end

return p