Zuletzt bearbeitet vor 45 Minuten
von Xineohp1506

Modul:Publikation/Buch: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 10: Zeile 10:
     end
     end


    -- Überprüfung auf Serien-ID
     if not seriesID or seriesID == "" then
     if not seriesID or seriesID == "" then
         return "Keine Serien-ID angegeben."
         return "Keine Serien-ID angegeben."
     end
     end


    -- Abfrage erstellen
     local query = { ["[[SerienID::" .. seriesID .. "]]"] = "" }
     local query = { ["[[SerienID::" .. seriesID .. "]]"] = "" } -- Keine spezielle Ausgabeanweisung
     local queryResult = mw.smw.getQueryResult(query)
     local queryResult = mw.smw.getQueryResult(query)


    -- Kein Ergebnis
     if not queryResult or not queryResult.results then
     if not queryResult or not queryResult.results then
         return "Keine Ergebnisse gefunden."
         return "Keine Ergebnisse gefunden. Serien-ID: " .. seriesID
     end
     end


    -- Extrahieren des Seitentitels
     local results = queryResult.results
     local results = queryResult.results
     if results and results[1] and results[1].fulltext then
     if results and results[1] and results[1].fulltext then
         return "Gefundener Seitentitel: " .. results[1].fulltext
         return "Gefundener Seitentitel: " .. results[1].fulltext
     else
     else
         return "Kein Seitentitel gefunden."
         return "Kein Seitentitel gefunden. Serien-ID: " .. seriesID
     end
     end
end
end
Zeile 38: Zeile 34:
     end
     end


    -- Überprüfung auf Seitentitel und Attribut
     if not page or not attribute then
     if not page or not attribute then
         return "Seite oder Attribut nicht angegeben."
         return "Seite oder Attribut nicht angegeben. Seite: " .. tostring(page) .. ", Attribut: " .. tostring(attribute)
     end
     end


    -- Abfrage erstellen
     local query = "[[" .. page .. "]]|?" .. attribute .. "|limit=1"
     local query = "[[" .. page .. "]]|?" .. attribute .. "|limit=1"
     local result = mw.smw.ask(query)
     local result = mw.smw.ask(query)
     if not result then
     if not result then
         return "Keine Ergebnisse gefunden."
         return "Keine Ergebnisse gefunden für Seite: " .. page
     end
     end


    -- Durchlaufe Ergebnisse, um das Attribut zu extrahieren
     for title, data in pairs(result) do
     for title, data in pairs(result) do
         if data[attribute] and type(data[attribute]) == "table" then
         if data[attribute] and type(data[attribute]) == "table" then
             return tostring(data[attribute][1]) -- Erster gefundener Wert
             return "Gefundene Gesamtbände: " .. tostring(data[attribute][1])
         end
         end
     end
     end


     return "Attribut nicht gefunden."
     return "Attribut nicht gefunden. Seite: " .. page .. ", Attribut: " .. attribute
end
end



Version vom 21. November 2024, 22:40 Uhr

Die Dokumentation für dieses Modul kann unter Modul:Publikation/Buch/Doku erstellt werden

-- local smw = require('Module:SMW')
local getArgs = require('Module:Arguments').getArgs

local buch = {}

-- Funktion zur Extraktion der Gesamtbände aus der Serien-ID
function buch.getCompleteVolumes(seriesID)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end

    if not seriesID or seriesID == "" then
        return "Keine Serien-ID angegeben."
    end

    local query = { ["[[SerienID::" .. seriesID .. "]]"] = "" }
    local queryResult = mw.smw.getQueryResult(query)

    if not queryResult or not queryResult.results then
        return "Keine Ergebnisse gefunden. Serien-ID: " .. seriesID
    end

    local results = queryResult.results
    if results and results[1] and results[1].fulltext then
        return "Gefundener Seitentitel: " .. results[1].fulltext
    else
        return "Kein Seitentitel gefunden. Serien-ID: " .. seriesID
    end
end

function buch.getCompleteVolumesByTitle(page, attribute)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end

    if not page or not attribute then
        return "Seite oder Attribut nicht angegeben. Seite: " .. tostring(page) .. ", Attribut: " .. tostring(attribute)
    end

    local query = "[[" .. page .. "]]|?" .. attribute .. "|limit=1"
    local result = mw.smw.ask(query)

    if not result then
        return "Keine Ergebnisse gefunden für Seite: " .. page
    end

    for title, data in pairs(result) do
        if data[attribute] and type(data[attribute]) == "table" then
            return "Gefundene Gesamtbände: " .. tostring(data[attribute][1])
        end
    end

    return "Attribut nicht gefunden. Seite: " .. page .. ", Attribut: " .. attribute
end

-- Hauptfunktion für die Buchdarstellung
function buch.render(args, helper)
    local seriesID = args["Hat Serie"] or ""
    local band = args["Band"] or ""

    -- Serien-Seite holen
    local seriesTitle = buch.getCompleteVolumes(seriesID)
    if seriesTitle:find("Gefundener Seitentitel") then
        seriesTitle = seriesTitle:gsub("Gefundener Seitentitel: ", "")
    else
        return "Fehler beim Abrufen der Serien-Seite."
    end

    -- Attribut abrufen
    local completeVolumes = buch.getCompleteVolumesByTitle(seriesTitle, "Complete volumes")
    if completeVolumes:find("Keine Ergebnisse gefunden") or completeVolumes:find("Attribut nicht gefunden") then
        return "Fehler beim Abrufen der Gesamtbände."
    end

    -- Ausgabe der Bände
    local bandOutput = "Band " .. band
    if completeVolumes and completeVolumes ~= "" then
        bandOutput = bandOutput .. " von " .. completeVolumes
    else
        bandOutput = bandOutput .. " (Keine Gesamtbände gefunden)"
    end

    return bandOutput
end

return buch