Zuletzt bearbeitet vor 2 Wochen
von Xineohp1506

Modul:LPON/EpisodeOutput: Unterschied zwischen den Versionen

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.debugInside(cleanProjektname)
-- 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
    local output = '<h2>Debugging-Ausgabe</h2>\n'
    output = output .. string.format('<p>Projektname (clean): %s</p>\n', cleanProjektname or "Nicht angegeben")


     if not cleanProjektname or cleanProjektname == "" then
     if not cleanProjektname or cleanProjektname == "" then
         return output .. '<p>Kein Projekt angegeben.</p>'
         return "Kein Projekt angegeben."
     end
     end


Zeile 19: Zeile 17:
         cleanProjektname
         cleanProjektname
     )
     )
    output = output .. string.format('<p>Abfrage: %s</p>\n', query)


    -- Abfrage ausführen
     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 output .. '<p>Keine Ergebnisse gefunden.</p>'
         return "Keine Folgen für dieses Projekt gefunden."
     end
     end


     output = output .. '<h3>Gefundene Ergebnisse:</h3>\n'
     -- Folgen nach Tabs aufteilen
     output = output .. '<ul>\n'
     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 "0"
         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"


         output = output .. string.format(
         -- Staffelnummer bestimmen (z. B. alle 20 Folgen eine neue Staffel)
             '<li><b>Episodennummer:</b> %s<br><b>Titel:</b> %s<br><b>Veröffentlichungsdatum:</b> %s<br><b>Spieler:</b> %s<br><b>VOD:</b> %s</li>\n',
        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 &#124; %s &#124; %s &#124; [%s Link]',
             episodeNumber,
             episodeNumber,
             episodeTitle,
             episodeTitle,
            releaseDate,
             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. &#124; Titel &#124; Spieler &#124; Erstausstrahlung &#124; VOD\n%s\n|}\n|-|\n",
            tabName,
            table.concat(episodes, "\n")
         )
         )
     end
     end
     output = output .. '</ul>\n'
     wikitextOutput = wikitextOutput .. '</tabber>'


     return output
    -- 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 &#124; %s &#124; %s &#124; [%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. &#124; Titel &#124; Spieler &#124; Erstausstrahlung &#124; VOD\n%s\n|}\n|-|\n",
            tabName,
            table.concat(episodes, "\n")
        )
    end
    wikitextOutput = wikitextOutput .. '</tabber>'

    -- Wikitext verarbeiten
    return frame:preprocess(wikitextOutput)
end

return episodeOutput