Keine Bearbeitungszusammenfassung Markierung: Zurückgesetzt |
Keine Bearbeitungszusammenfassung Markierung: Manuelle Zurücksetzung |
||
Zeile 2: | Zeile 2: | ||
local helper = require('Module:LPON/Helper') | local helper = require('Module:LPON/Helper') | ||
function episodeOutput. | -- Funktion zur tabberbasierten Ausgabe der Folgen | ||
function episodeOutput.inside(frame, cleanProjektname) | |||
if not mw.smw then | if not mw.smw then | ||
return "Semantic MediaWiki-Erweiterung nicht gefunden." | return "Semantic MediaWiki-Erweiterung nicht gefunden." | ||
end | end | ||
if not cleanProjektname or cleanProjektname == "" then | if not cleanProjektname or cleanProjektname == "" then | ||
return | return "Kein Projekt angegeben." | ||
end | end | ||
Zeile 19: | Zeile 17: | ||
cleanProjektname | cleanProjektname | ||
) | ) | ||
local queryResult = mw.smw.getQueryResult(query) | local queryResult = mw.smw.getQueryResult(query) | ||
if not queryResult or not queryResult.results then | if not queryResult or not queryResult.results then | ||
return | return "Keine Folgen für dieses Projekt gefunden." | ||
end | end | ||
-- Folgen nach Tabs aufteilen | |||
local tabGroups = {} | |||
for _, result in ipairs(queryResult.results) do | for _, result in ipairs(queryResult.results) do | ||
local episodeNumber = result.printouts["LPON:Episodennummer"] and result.printouts["LPON:Episodennummer"][1] or | local episodeNumber = result.printouts["LPON:Episodennummer"] and result.printouts["LPON:Episodennummer"][1] or 0 | ||
local episodeTitle = result.printouts["LPON:Episodentitel"] and result.printouts["LPON:Episodentitel"][1] or "Ohne Titel" | local episodeTitle = result.printouts["LPON:Episodentitel"] and result.printouts["LPON:Episodentitel"][1] or "Ohne Titel" | ||
local releaseDate = result.printouts["LPON:Veröffentlichungsdatum"] and result.printouts["LPON:Veröffentlichungsdatum"][1] or "Unbekannt" | local releaseDate = result.printouts["LPON:Veröffentlichungsdatum"] and result.printouts["LPON:Veröffentlichungsdatum"][1] or "Unbekannt" | ||
Zeile 38: | Zeile 33: | ||
local vodLink = result.printouts["LPON:VOD-Link"] and result.printouts["LPON:VOD-Link"][1] or "Kein Link" | local vodLink = result.printouts["LPON:VOD-Link"] and result.printouts["LPON:VOD-Link"][1] or "Kein Link" | ||
-- Staffelnummer bestimmen (z. B. alle 20 Folgen eine neue Staffel) | |||
' | local season = math.floor((episodeNumber - 1) / 20) + 1 | ||
local tabName = string.format("%02d - %02d", (season - 1) * 20 + 1, season * 20) | |||
if not tabGroups[tabName] then | |||
tabGroups[tabName] = {} | |||
end | |||
table.insert(tabGroups[tabName], string.format( | |||
'|-\n| %d | %s | %s | [%s Link]', | |||
episodeNumber, | episodeNumber, | ||
episodeTitle, | episodeTitle, | ||
players, | players, | ||
vodLink | vodLink | ||
)) | |||
end | |||
-- Tabber-Ausgabe generieren | |||
local wikitextOutput = '<tabber>' | |||
for tabName, episodes in pairs(tabGroups) do | |||
wikitextOutput = wikitextOutput .. string.format( | |||
"\n%s=\n{| class=\"wikitable\"\n! Nr. | Titel | Spieler | Erstausstrahlung | VOD\n%s\n|}\n|-|\n", | |||
tabName, | |||
table.concat(episodes, "\n") | |||
) | ) | ||
end | end | ||
wikitextOutput = wikitextOutput .. '</tabber>' | |||
return | -- Wikitext verarbeiten | ||
return frame:preprocess(wikitextOutput) | |||
end | end | ||
return episodeOutput | return episodeOutput |
Version vom 18. Dezember 2024, 19:03 Uhr
Die Dokumentation für dieses Modul kann unter Modul:LPON/EpisodeOutput/Doku erstellt werden
local episodeOutput = {}
local helper = require('Module:LPON/Helper')
-- Funktion zur tabberbasierten Ausgabe der Folgen
function episodeOutput.inside(frame, cleanProjektname)
if not mw.smw then
return "Semantic MediaWiki-Erweiterung nicht gefunden."
end
if not cleanProjektname or cleanProjektname == "" then
return "Kein Projekt angegeben."
end
-- Abfrage-String erstellen
local query = string.format(
"[[LPON:Projekt::%s]][[LPON:Typ::Episode]]|?LPON:Episodennummer|?LPON:Episodentitel|?LPON:Veröffentlichungsdatum|?LPON:Spieler|?LPON:VOD-Link",
cleanProjektname
)
local queryResult = mw.smw.getQueryResult(query)
if not queryResult or not queryResult.results then
return "Keine Folgen für dieses Projekt gefunden."
end
-- Folgen nach Tabs aufteilen
local tabGroups = {}
for _, result in ipairs(queryResult.results) do
local episodeNumber = result.printouts["LPON:Episodennummer"] and result.printouts["LPON:Episodennummer"][1] or 0
local episodeTitle = result.printouts["LPON:Episodentitel"] and result.printouts["LPON:Episodentitel"][1] or "Ohne Titel"
local releaseDate = result.printouts["LPON:Veröffentlichungsdatum"] and result.printouts["LPON:Veröffentlichungsdatum"][1] or "Unbekannt"
local players = result.printouts["LPON:Spieler"] and table.concat(result.printouts["LPON:Spieler"], ", ") or "Unbekannt"
local vodLink = result.printouts["LPON:VOD-Link"] and result.printouts["LPON:VOD-Link"][1] or "Kein Link"
-- Staffelnummer bestimmen (z. B. alle 20 Folgen eine neue Staffel)
local season = math.floor((episodeNumber - 1) / 20) + 1
local tabName = string.format("%02d - %02d", (season - 1) * 20 + 1, season * 20)
if not tabGroups[tabName] then
tabGroups[tabName] = {}
end
table.insert(tabGroups[tabName], string.format(
'|-\n| %d | %s | %s | [%s Link]',
episodeNumber,
episodeTitle,
players,
vodLink
))
end
-- Tabber-Ausgabe generieren
local wikitextOutput = '<tabber>'
for tabName, episodes in pairs(tabGroups) do
wikitextOutput = wikitextOutput .. string.format(
"\n%s=\n{| class=\"wikitable\"\n! Nr. | Titel | Spieler | Erstausstrahlung | VOD\n%s\n|}\n|-|\n",
tabName,
table.concat(episodes, "\n")
)
end
wikitextOutput = wikitextOutput .. '</tabber>'
-- Wikitext verarbeiten
return frame:preprocess(wikitextOutput)
end
return episodeOutput