Zuletzt bearbeitet vor 5 Stunden
von Xineohp1506

Modul:Publikation/Buch: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
local buch = {}
local smw = require('Module:SMW')


-- Vereinfachte Debugging-Funktion
local p = {}
local function getSeriesPages(seriesTitle)
    -- Debugging: Festgelegter Testwert
    local queryData = {
        query = "[[Hat Titel::Empire of the Vampire]]",  -- Statische semantische Abfrage
        limit = 1
    }
    local result = mw.smw.getQueryResult(queryData)


     -- Debugging-Ausgabe
function p.getVolumesAndRelated(seriesID)
     local debugOutput = "Abfrage: " .. mw.text.jsonEncode(queryData) .. "\n"
     -- Schritt 1: Seitentitel der Serie ermitteln
     local seriesTitle = smw.getFullPageTitle("[[SerienID::" .. seriesID .. "]]")
    if not seriesTitle then
        return "Keine Serie mit SerienID " .. seriesID .. " gefunden."
    end


     if result and result.results and next(result.results) then
     -- Schritt 2: Gesamtbände auslesen
         for _, data in pairs(result.results) do
    local completeVolumes = smw.ask("[[" .. seriesTitle .. "]]|?Complete volumes|limit=1")
             debugOutput = debugOutput .. "Ergebnisse: " .. mw.text.jsonEncode(data) .. "\n"
    local totalVolumes = nil
            return data.fulltext, debugOutput
    if completeVolumes then
         for _, data in pairs(completeVolumes) do
             totalVolumes = data["Complete volumes"]
         end
         end
     end
     end
    debugOutput = debugOutput .. "Keine Ergebnisse gefunden.\n"
    return nil, debugOutput
end


-- Hauptfunktion zur Darstellung der Buchinformationen
    -- Schritt 3: Vorhandene Bände abrufen
function buch.render(args, main)
    local relatedBooksQuery = "[[Hat Serie::" .. seriesTitle .. "]]|?Titel|?Band|limit=100"
     local output = '<table class="publikation buch">'
     local relatedBooks = smw.ask(relatedBooksQuery)


     -- Titel
     -- Schritt 4: Ergebnisse formatieren
     local title = args["Titel"] or "Unbekannt"
     local output = "Band: " .. (totalVolumes and totalVolumes or "Unbekannt") .. "\n\n"
     output = output .. '<tr><td><strong>Titel</strong></td><td>[[Hat Titel::' .. title .. ']]</td></tr>'
     output = output .. "Vorhandene Bände in der Bibliothek:\n"


    -- Debugging der Serie
     if relatedBooks then
     if args["Hat Serie"] then
         for title, data in pairs(relatedBooks) do
         local seriesPage, debugInfo = getSeriesPages(args["Hat Serie"])
            output = output .. "* " .. (data["Band"] or "Unbekannter Band") .. ": [[" .. title .. "|" .. data["Titel"] .. "]]\n"
         output = output .. '<tr><td colspan="2"><pre>' .. debugInfo .. '</pre></td></tr>'
        end
    else
         output = output .. "Keine Bände in der Bibliothek gefunden."
     end
     end


    output = output .. '</table>'
     return output
     return output
end
end


return buch
return p

Version vom 21. November 2024, 13:49 Uhr

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

local smw = require('Module:SMW')

local p = {}

function p.getVolumesAndRelated(seriesID)
    -- Schritt 1: Seitentitel der Serie ermitteln
    local seriesTitle = smw.getFullPageTitle("[[SerienID::" .. seriesID .. "]]")
    if not seriesTitle then
        return "Keine Serie mit SerienID " .. seriesID .. " gefunden."
    end

    -- Schritt 2: Gesamtbände auslesen
    local completeVolumes = smw.ask("[[" .. seriesTitle .. "]]|?Complete volumes|limit=1")
    local totalVolumes = nil
    if completeVolumes then
        for _, data in pairs(completeVolumes) do
            totalVolumes = data["Complete volumes"]
        end
    end

    -- Schritt 3: Vorhandene Bände abrufen
    local relatedBooksQuery = "[[Hat Serie::" .. seriesTitle .. "]]|?Titel|?Band|limit=100"
    local relatedBooks = smw.ask(relatedBooksQuery)

    -- Schritt 4: Ergebnisse formatieren
    local output = "Band: " .. (totalVolumes and totalVolumes or "Unbekannt") .. "\n\n"
    output = output .. "Vorhandene Bände in der Bibliothek:\n"

    if relatedBooks then
        for title, data in pairs(relatedBooks) do
            output = output .. "* " .. (data["Band"] or "Unbekannter Band") .. ": [[" .. title .. "|" .. data["Titel"] .. "]]\n"
        end
    else
        output = output .. "Keine Bände in der Bibliothek gefunden."
    end

    return output
end

return p