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,
}