Zuletzt bearbeitet vor 6 Minuten
von Xineohp1506

Modul:Publikation/Buch: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(21 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 2: Zeile 2:
local getArgs = require('Module:Arguments').getArgs
local getArgs = require('Module:Arguments').getArgs


local p = {}
local buch = {}


function p.getVolumesAndRelated(frame)
-- Funktion zum holen des Seitentitels mithilfe der Serien-ID
     -- Argumente sicher extrahieren
function buch.getSeriesPageTitle(frame)
     local args = getArgs(frame)
     if not mw.smw then
    local seriesID = args[1] -- Die SerienID sollte das erste Argument sein
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
     end


     if not seriesID or seriesID == "" then
    local queryResult = mw.smw.getQueryResult(frame.args)
         return "SerienID wurde nicht angegeben."
 
    -- Kein Ergebnis gefunden
     if not queryResult or not queryResult.results or not queryResult.results[1] then
         return "Keine Ergebnisse gefunden."
     end
     end


     -- Schritt 1: Seitentitel der Serie ermitteln
     -- Seitentitel extrahieren
     local seriesTitle = smw.getFullPageTitle("[[SerienID::" .. seriesID .. "]]")
     local results = queryResult.results
     if not seriesTitle then
    if results[1].fulltext then
         return "Keine Serie mit SerienID " .. seriesID .. " gefunden."
        return results[1].fulltext
     else
         return "Kein Seitentitel gefunden."
     end
     end
end


     -- Schritt 2: Gesamtbände auslesen
-- Funktion zur Extraktion der Gesamtbände aus der Serienseite
     local completeVolumes = smw.ask("[[" .. seriesTitle .. "]]|?Complete volumes|limit=1")
function buch.getCompleteVolumesByTitle(frame)
     local totalVolumes = nil
     if not mw.smw then
     if completeVolumes then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
         for _, data in pairs(completeVolumes) do
    end
             totalVolumes = data["Complete volumes"]
 
    local page = frame.args[1]  -- Seitentitel
    local attribute = frame.args[2]  -- Attributname
 
    -- Überprüfen, ob die erforderlichen Parameter vorhanden sind
    if not page or not attribute then
        return "Seite oder Attribut nicht angegeben."
    end
 
    -- Abfrage erstellen
     local query = "[[" .. page .. "]]|?" .. attribute .. "|limit=1"
     local result = mw.smw.ask(query)
 
    -- Kein Ergebnis gefunden
     if not result then
         return "Keine Ergebnisse gefunden."
    end
 
    -- Ergebnis verarbeiten
    for title, data in pairs(result) do
        if data[attribute] then
             return tostring(data[attribute])
         end
         end
     end
     end


     -- Schritt 3: Vorhandene Bände abrufen
     return "Attribut nicht gefunden."
     local relatedBooksQuery = "[[Hat Serie::" .. seriesTitle .. "]]|?Titel|?Band|limit=100"
end
     local relatedBooks = smw.ask(relatedBooksQuery)
 
-- Hauptfunktion für die Buchdarstellung
function buch.render(frame, parentModule)
    local args = frame.args -- Direkt auf frame.args zugreifen
     local debugOutput = ""
 
    -- Debug: Zeige alle empfangenen Argumente
    debugOutput = debugOutput .. "Empfangene Argumente:\n<pre>" .. mw.dumpObject(args) .. "</pre>\n"
 
    local seriesID = args["SerienID"]
 
     -- Serien-ID prüfen
    if seriesID then
        debugOutput = debugOutput .. "Serien-ID: " .. seriesID .. "\n"


    -- Schritt 4: Ergebnisse formatieren
        -- Serienseite abrufen
    local output = "Band: " .. (totalVolumes and totalVolumes or "Unbekannt") .. "\n\n"
        local seriesPageTitle = buch.getSeriesPageTitle({ args = { "[[SerienID::" .. seriesID .. "]]" } })
    output = output .. "Vorhandene Bände in der Bibliothek:\n"
       
        if seriesPageTitle and seriesPageTitle ~= "Keine Ergebnisse gefunden." then
            -- Gesamtbände abrufen
            local completeVolumes = buch.getCompleteVolumesByTitle(seriesPageTitle, "Complete volumes")


    if relatedBooks then
            if completeVolumes and completeVolumes ~= "Keine Ergebnisse gefunden." and completeVolumes ~= "Attribut nicht gefunden." then
        for title, data in pairs(relatedBooks) do
                debugOutput = debugOutput .. "Gefundene Gesamtbände: " .. completeVolumes
            output = output .. "* " .. (data["Band"] or "Unbekannter Band") .. ": [[" .. title .. "|" .. data["Titel"] .. "]]\n"
            else
                debugOutput = debugOutput .. "Fehler: Gesamtbände konnten nicht abgerufen werden.\n"
            end
        else
            debugOutput = debugOutput .. "Fehler: Serienseite konnte nicht gefunden werden.\n"
         end
         end
     else
     else
         output = output .. "Keine Bände in der Bibliothek gefunden."
         debugOutput = debugOutput .. "Fehler: Serien-ID nicht angegeben.\n"
     end
     end


     return output
     return debugOutput
end
end


return p
return buch

Aktuelle Version vom 22. November 2024, 00:14 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 zum holen des Seitentitels mithilfe der Serien-ID
function buch.getSeriesPageTitle(frame)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end

    local queryResult = mw.smw.getQueryResult(frame.args)

    -- Kein Ergebnis gefunden
    if not queryResult or not queryResult.results or not queryResult.results[1] then
        return "Keine Ergebnisse gefunden."
    end

    -- Seitentitel extrahieren
    local results = queryResult.results
    if results[1].fulltext then
        return results[1].fulltext
    else
        return "Kein Seitentitel gefunden."
    end
end

-- Funktion zur Extraktion der Gesamtbände aus der Serienseite
function buch.getCompleteVolumesByTitle(frame)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end

    local page = frame.args[1]  -- Seitentitel
    local attribute = frame.args[2]  -- Attributname

    -- Überprüfen, ob die erforderlichen Parameter vorhanden sind
    if not page or not attribute then
        return "Seite oder Attribut nicht angegeben."
    end

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

    -- Kein Ergebnis gefunden
    if not result then
        return "Keine Ergebnisse gefunden."
    end

    -- Ergebnis verarbeiten
    for title, data in pairs(result) do
        if data[attribute] then
            return tostring(data[attribute])
        end
    end

    return "Attribut nicht gefunden."
end

-- Hauptfunktion für die Buchdarstellung
function buch.render(frame, parentModule)
    local args = frame.args -- Direkt auf frame.args zugreifen
    local debugOutput = ""

    -- Debug: Zeige alle empfangenen Argumente
    debugOutput = debugOutput .. "Empfangene Argumente:\n<pre>" .. mw.dumpObject(args) .. "</pre>\n"

    local seriesID = args["SerienID"]

    -- Serien-ID prüfen
    if seriesID then
        debugOutput = debugOutput .. "Serien-ID: " .. seriesID .. "\n"

        -- Serienseite abrufen
        local seriesPageTitle = buch.getSeriesPageTitle({ args = { "[[SerienID::" .. seriesID .. "]]" } })
        
        if seriesPageTitle and seriesPageTitle ~= "Keine Ergebnisse gefunden." then
            -- Gesamtbände abrufen
            local completeVolumes = buch.getCompleteVolumesByTitle(seriesPageTitle, "Complete volumes")

            if completeVolumes and completeVolumes ~= "Keine Ergebnisse gefunden." and completeVolumes ~= "Attribut nicht gefunden." then
                debugOutput = debugOutput .. "Gefundene Gesamtbände: " .. completeVolumes
            else
                debugOutput = debugOutput .. "Fehler: Gesamtbände konnten nicht abgerufen werden.\n"
            end
        else
            debugOutput = debugOutput .. "Fehler: Serienseite konnte nicht gefunden werden.\n"
        end
    else
        debugOutput = debugOutput .. "Fehler: Serien-ID nicht angegeben.\n"
    end

    return debugOutput
end

return buch