Module:Setlist/Songs: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary Tag: Reverted |
||
Line 88: | Line 88: | ||
["Paladin Strait"] = {"Clancy"}, | ["Paladin Strait"] = {"Clancy"}, | ||
["Time To Say Goodbye"] = {"Johnny Boy"} | ["Time To Say Goodbye"] = {"Johnny Boy"} | ||
} | } | ||
-- Определяем цвета альбомов | -- Определяем цвета альбомов | ||
local albumColors = { | local albumColors = { | ||
Line 100: | Line 100: | ||
["Johnny Boy"] = "#CECECE", | ["Johnny Boy"] = "#CECECE", | ||
} | } | ||
-- Определяем ссылки для альбомов | -- Определяем ссылки для альбомов | ||
local albumLinks = { | local albumLinks = { | ||
["Twenty One Pilots"] = "Twenty One Pilots (album)", | ["Twenty One Pilots"] = "Twenty One Pilots (album)", | ||
["Regional | ["Regional At Best"] = "Regional At Best", | ||
["Vessel"] = "Vessel (album)", | ["Vessel"] = "Vessel (album)", | ||
["Blurryface"] = "Blurryface (album)", | ["Blurryface"] = "Blurryface (album)", | ||
["Trench"] = "Trench (album)", | ["Trench"] = "Trench (album)", | ||
["Scaled | ["Scaled And Icy"] = "Scaled And Icy", | ||
["Johnny Boy | ["Johnny Boy"] = "Johnny Boy", | ||
} | } | ||
-- Вспомогательная функция для проверки наличия элемента в таблице | |||
local function tableContains(table, element) | |||
for _, value in ipairs(table) do | |||
if value == element then | |||
return true | |||
end | |||
end | |||
return false | |||
end | |||
-- Функция для фильтрации песен на основе года в названии страницы | |||
local function filterSongsByPageName(songs, pageName) | |||
local filteredSongs = {} | |||
-- Проверяем, заканчивается ли название страницы на .2009, .2010, .2011 или .2012 | |||
local isPre2013 = pageName:match("%.20(09|10|11|12)$") | |||
for song, albums in pairs(songs) do | |||
local filteredAlbums = {} | |||
for _, album in ipairs(albums) do | |||
if isPre2013 then | |||
-- До 2013 года: песни из Vessel и Regional At Best показываем только в Regional At Best | |||
if album == "Vessel" and tableContains(albums, "Regional At Best") then | |||
-- Пропускаем Vessel, если песня есть в Regional At Best | |||
elseif album == "Regional At Best" then | |||
table.insert(filteredAlbums, album) | |||
else | |||
table.insert(filteredAlbums, album) | |||
end | |||
else | |||
-- После 2012 года: песни из Regional At Best и Vessel показываем только в Vessel | |||
if album == "Regional At Best" and tableContains(albums, "Vessel") then | |||
-- Пропускаем Regional At Best, если песня есть в Vessel | |||
elseif album == "Vessel" then | |||
table.insert(filteredAlbums, album) | |||
else | |||
table.insert(filteredAlbums, album) | |||
end | |||
end | |||
end | |||
filteredSongs[song] = filteredAlbums | |||
end | |||
return filteredSongs | |||
end | |||
-- Основная функция для возврата данных | |||
local function getData(frame) | |||
-- Получаем название текущей страницы | |||
local pageName = frame:getParent():getTitle() | |||
local filteredSongs = filterSongsByPageName(songs, pageName) | |||
return { | |||
songs = filteredSongs, | |||
albumColors = albumColors, | |||
albumLinks = albumLinks, | |||
} | |||
end | |||
return { | return { | ||
getData = getData, | |||
songs = songs, | songs = songs, | ||
albumColors = albumColors, | albumColors = albumColors, | ||
albumLinks = albumLinks, | albumLinks = albumLinks, | ||
} | } |
Revision as of 03:30, 11 July 2025
Documentation for this module may be created at Module:Setlist/Songs/doc
local songs = { ["Implicit Demand For Proof"] = {"Twenty One Pilots"}, ["Fall Away"] = {"Twenty One Pilots"}, ["The Pantaloon"] = {"Twenty One Pilots"}, ["Addict With A Pen"] = {"Twenty One Pilots"}, ["Friend, Please"] = {"Twenty One Pilots"}, ["March To The Sea"] = {"Twenty One Pilots"}, ["Johnny Boy"] = {"Twenty One Pilots"}, ["Oh Ms Believer"] = {"Twenty One Pilots"}, ["Air Catcher"] = {"Twenty One Pilots"}, ["Trapdoor"] = {"Twenty One Pilots"}, ["A Car, A Torch, A Death"] = {"Twenty One Pilots"}, ["Taxi Cab"] = {"Twenty One Pilots"}, ["Before You Start Your Day"] = {"Twenty One Pilots"}, ["Isle Of Flightless Birds"] = {"Twenty One Pilots"}, ["Guns For Hands"] = {"Regional At Best", "Vessel"}, ["Holding On To You"] = {"Regional At Best", "Vessel"}, ["Ode To Sleep"] = {"Regional At Best", "Vessel"}, ["Slowtown"] = {"Regional At Best"}, ["Car Radio"] = {"Regional At Best", "Vessel"}, ["Forest"] = {"Regional At Best"}, ["Glowing Eyes"] = {"Regional At Best"}, ["Kitchen Sink"] = {"Regional At Best"}, ["Anathema"] = {"Regional At Best"}, ["Lovely"] = {"Regional At Best"}, ["Ruby"] = {"Regional At Best"}, ["Trees"] = {"Regional At Best", "Vessel"}, ["Be Concerned"] = {"Regional At Best"}, ["Clear"] = {"Regional At Best"}, ["Migraine"] = {"Vessel"}, ["House Of Gold"] = {"Vessel"}, ["Semi-Automatic"] = {"Vessel"}, ["Screen"] = {"Vessel"}, ["The Run And Go"] = {"Vessel"}, ["Fake You Out"] = {"Vessel"}, ["Truce"] = {"Vessel"}, ["Heavydirtysoul"] = {"Blurryface"}, ["Stressed Out"] = {"Blurryface"}, ["Ride"] = {"Blurryface"}, ["Fairly Local"] = {"Blurryface"}, ["Tear In My Heart"] = {"Blurryface"}, ["Lane Boy"] = {"Blurryface"}, ["The Judge"] = {"Blurryface"}, ["Doubt"] = {"Blurryface"}, ["Polarize"] = {"Blurryface"}, ["We Don't Believe What's On TV"] = {"Blurryface"}, ["Message Man"] = {"Blurryface"}, ["Hometown"] = {"Blurryface"}, ["Not Today"] = {"Blurryface"}, ["Goner"] = {"Blurryface"}, ["Jumpsuit"] = {"Trench"}, ["Levitate"] = {"Trench"}, ["Morph"] = {"Trench"}, ["My Blood"] = {"Trench"}, ["Chlorine"] = {"Trench"}, ["Smithereens"] = {"Trench"}, ["Neon Gravestones"] = {"Trench"}, ["The Hype"] = {"Trench"}, ["Nico And The Niners"] = {"Trench"}, ["Cut My Lip"] = {"Trench"}, ["Bandito"] = {"Trench"}, ["Pet Cheetah"] = {"Trench"}, ["Legend"] = {"Trench"}, ["Leave The City"] = {"Trench"}, ["Good Day"] = {"Scaled And Icy"}, ["Choker"] = {"Scaled And Icy"}, ["Shy Away"] = {"Scaled And Icy"}, ["The Outside"] = {"Scaled And Icy"}, ["Saturday"] = {"Scaled And Icy"}, ["Never Take It"] = {"Scaled And Icy"}, ["Mulberry Street"] = {"Scaled And Icy"}, ["Formidable"] = {"Scaled And Icy"}, ["Bounce Man"] = {"Scaled And Icy"}, ["No Chances"] = {"Scaled And Icy"}, ["Redecorate"] = {"Scaled And Icy"}, ["Overcompensate"] = {"Clancy"}, ["Next Semester"] = {"Clancy"}, ["Backslide"] = {"Clancy"}, ["Midwest Indigo"] = {"Clancy"}, ["Routines In The Night"] = {"Clancy"}, ["Vignette"] = {"Clancy"}, ["The Craving (Jenna's Version)"] = {"Clancy"}, ["Lavish"] = {"Clancy"}, ["Navigating"] = {"Clancy"}, ["Snap Back"] = {"Clancy"}, ["Oldies Station"] = {"Clancy"}, ["At The Risk Of Feeling Dumb"] = {"Clancy"}, ["Paladin Strait"] = {"Clancy"}, ["Time To Say Goodbye"] = {"Johnny Boy"} } -- Определяем цвета альбомов local albumColors = { ["Twenty One Pilots"] = "#87B22A", ["Regional At Best"] = "#21ABC6", ["Vessel"] = "#d5d8dd", ["Blurryface"] = "#dc4747", ["Trench"] = "#ffcc4d", ["Scaled And Icy"] = "#b3e7fa", ["Johnny Boy"] = "#CECECE", } -- Определяем ссылки для альбомов local albumLinks = { ["Twenty One Pilots"] = "Twenty One Pilots (album)", ["Regional At Best"] = "Regional At Best", ["Vessel"] = "Vessel (album)", ["Blurryface"] = "Blurryface (album)", ["Trench"] = "Trench (album)", ["Scaled And Icy"] = "Scaled And Icy", ["Johnny Boy"] = "Johnny Boy", } -- Вспомогательная функция для проверки наличия элемента в таблице local function tableContains(table, element) for _, value in ipairs(table) do if value == element then return true end end return false end -- Функция для фильтрации песен на основе года в названии страницы local function filterSongsByPageName(songs, pageName) local filteredSongs = {} -- Проверяем, заканчивается ли название страницы на .2009, .2010, .2011 или .2012 local isPre2013 = pageName:match("%.20(09|10|11|12)$") for song, albums in pairs(songs) do local filteredAlbums = {} for _, album in ipairs(albums) do if isPre2013 then -- До 2013 года: песни из Vessel и Regional At Best показываем только в Regional At Best if album == "Vessel" and tableContains(albums, "Regional At Best") then -- Пропускаем Vessel, если песня есть в Regional At Best elseif album == "Regional At Best" then table.insert(filteredAlbums, album) else table.insert(filteredAlbums, album) end else -- После 2012 года: песни из Regional At Best и Vessel показываем только в Vessel if album == "Regional At Best" and tableContains(albums, "Vessel") then -- Пропускаем Regional At Best, если песня есть в Vessel elseif album == "Vessel" then table.insert(filteredAlbums, album) else table.insert(filteredAlbums, album) end end end filteredSongs[song] = filteredAlbums end return filteredSongs end -- Основная функция для возврата данных local function getData(frame) -- Получаем название текущей страницы local pageName = frame:getParent():getTitle() local filteredSongs = filterSongsByPageName(songs, pageName) return { songs = filteredSongs, albumColors = albumColors, albumLinks = albumLinks, } end return { getData = getData, songs = songs, albumColors = albumColors, albumLinks = albumLinks, }