Zuletzt bearbeitet vor 7 Stunden
von Xineohp1506

Modul:Publikation/Buch: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
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 zur Extraktion der Gesamtbände aus der Serien-ID
     -- Argumente sicher extrahieren
function buch.getCompleteVolumes(seriesID)
    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
     if not seriesID or seriesID == "" then
         return "SerienID wurde nicht angegeben."
         return "Keine Serien-ID angegeben."
     end
     end


     -- Schritt 1: Seitentitel der Serie ermitteln
     -- Abfrage vorbereiten
     local seriesTitle = smw.getFullPageTitle("[[SerienID::" .. seriesID .. "]]")
     local query = { ["[[SerienID::" .. seriesID .. "]]"] = "?Complete volumes" }
     if not seriesTitle then
    local queryResult = mw.smw.getQueryResult(query)
         return "Keine Serie mit SerienID " .. seriesID .. " gefunden."
 
     if not queryResult or not queryResult.results then
         return "Keine Ergebnisse gefunden."
     end
     end


     -- Schritt 2: Gesamtbände auslesen
     -- Ergebnisse analysieren
     local completeVolumes = smw.ask("[[" .. seriesTitle .. "]]|?Complete volumes|limit=1")
     for _, result in pairs(queryResult.results) do
    local totalVolumes = nil
        local printouts = result.printouts
    if completeVolumes then
        if printouts and printouts["Complete volumes"] then
        for _, data in pairs(completeVolumes) do
             return printouts["Complete volumes"][1] -- Gibt den ersten gefundenen Wert zurück
             totalVolumes = data["Complete volumes"]
         end
         end
     end
     end


     -- Schritt 3: Vorhandene Bände abrufen
     return "Keine Gesamtbände gefunden."
     local relatedBooksQuery = "[[Hat Serie::" .. seriesTitle .. "]]|?Titel|?Band|limit=100"
end
     local relatedBooks = smw.ask(relatedBooksQuery)
 
-- Hauptfunktion für die Buchdarstellung
function buch.render(args, helper)
    local title = args["Titel"] or "Unbekannt"
     local author = args["Autor"] or "Unbekannt"
    local band = args["Band"] or ""
    local seriesID = args["Hat Serie"] or ""
    local cover = args["Coverbild"] or ""
    local genre = args["Genre"] or ""
    local language = args["Sprache"] or ""
    local location = args["Standort"] or ""
    local summary = args["Inhaltszusammenfassung"] or ""
    local price = args["Preis"] or ""
    local originalTitle = args["Original Titel"] or ""
    local publisher = args["Verlag"] or ""
    local year = args["Erscheinungsjahr"] or ""
     local isbn10 = helper.getIsbnLink(args["ISBN-10"], "ISBN-10")
    local isbn13 = helper.getIsbnLink(args["ISBN-13"], "ISBN-13")
    local dnbID = args["Datensatz ID"] or ""


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


     if relatedBooks then
     -- Ausgabe für Band
        for title, data in pairs(relatedBooks) do
    local bandOutput = "Band " .. band
            output = output .. "* " .. (data["Band"] or "Unbekannter Band") .. ": [[" .. title .. "|" .. data["Titel"] .. "]]\n"
    if completeVolumes and completeVolumes ~= "" then
        end
         bandOutput = bandOutput .. " von " .. completeVolumes
    else
         output = output .. "Keine Bände in der Bibliothek gefunden."
     end
     end


     return output
    -- Titelzeile
    local result = "'''Titel:''' " .. title .. "\n"
    result = result .. "'''Autor(en):''' " .. author .. "\n"
    result = result .. "'''Band:''' " .. bandOutput .. "\n"
 
    -- Zusätzliche Felder
    result = result .. (publisher ~= "" and "'''Verlag:''' " .. publisher .. "\n" or "")
    result = result .. (year ~= "" and "'''Erscheinungsjahr:''' " .. year .. "\n" or "")
    result = result .. (isbn10 ~= "" and "'''ISBN-10:''' " .. isbn10 .. "\n" or "")
    result = result .. (isbn13 ~= "" and "'''ISBN-13:''' " .. isbn13 .. "\n" or "")
    result = result .. (genre ~= "" and "'''Genre:''' " .. genre .. "\n" or "")
    result = result .. (language ~= "" and "'''Sprache:''' " .. language .. "\n" or "")
    result = result .. (location ~= "" and "'''Standort:''' " .. location .. "\n" or "")
    result = result .. (price ~= "" and "'''Preis:''' " .. price .. "\n" or "")
    result = result .. (dnbID ~= "" and "'''DNB-ID:''' [[https://d-nb.info/" .. dnbID .. "]]\n" or "")
    result = result .. (summary ~= "" and "'''Inhaltszusammenfassung:''' " .. summary .. "\n" or "")
 
    -- Coverbild
    local defaultCover = "Library:Cover:BuchDefault.webp"
    local coverImage = helper.getCoverImage(cover, defaultCover)
    result = result .. "\n" .. coverImage
 
     return result
end
end


return p
return buch

Version vom 21. November 2024, 14:43 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

    -- Abfrage vorbereiten
    local query = { ["[[SerienID::" .. seriesID .. "]]"] = "?Complete volumes" }
    local queryResult = mw.smw.getQueryResult(query)

    if not queryResult or not queryResult.results then
        return "Keine Ergebnisse gefunden."
    end

    -- Ergebnisse analysieren
    for _, result in pairs(queryResult.results) do
        local printouts = result.printouts
        if printouts and printouts["Complete volumes"] then
            return printouts["Complete volumes"][1] -- Gibt den ersten gefundenen Wert zurück
        end
    end

    return "Keine Gesamtbände gefunden."
end

-- Hauptfunktion für die Buchdarstellung
function buch.render(args, helper)
    local title = args["Titel"] or "Unbekannt"
    local author = args["Autor"] or "Unbekannt"
    local band = args["Band"] or ""
    local seriesID = args["Hat Serie"] or ""
    local cover = args["Coverbild"] or ""
    local genre = args["Genre"] or ""
    local language = args["Sprache"] or ""
    local location = args["Standort"] or ""
    local summary = args["Inhaltszusammenfassung"] or ""
    local price = args["Preis"] or ""
    local originalTitle = args["Original Titel"] or ""
    local publisher = args["Verlag"] or ""
    local year = args["Erscheinungsjahr"] or ""
    local isbn10 = helper.getIsbnLink(args["ISBN-10"], "ISBN-10")
    local isbn13 = helper.getIsbnLink(args["ISBN-13"], "ISBN-13")
    local dnbID = args["Datensatz ID"] or ""

    -- Gesamtbände extrahieren
    local completeVolumes = buch.getCompleteVolumes(seriesID)

    -- Ausgabe für Band
    local bandOutput = "Band " .. band
    if completeVolumes and completeVolumes ~= "" then
        bandOutput = bandOutput .. " von " .. completeVolumes
    end

    -- Titelzeile
    local result = "'''Titel:''' " .. title .. "\n"
    result = result .. "'''Autor(en):''' " .. author .. "\n"
    result = result .. "'''Band:''' " .. bandOutput .. "\n"

    -- Zusätzliche Felder
    result = result .. (publisher ~= "" and "'''Verlag:''' " .. publisher .. "\n" or "")
    result = result .. (year ~= "" and "'''Erscheinungsjahr:''' " .. year .. "\n" or "")
    result = result .. (isbn10 ~= "" and "'''ISBN-10:''' " .. isbn10 .. "\n" or "")
    result = result .. (isbn13 ~= "" and "'''ISBN-13:''' " .. isbn13 .. "\n" or "")
    result = result .. (genre ~= "" and "'''Genre:''' " .. genre .. "\n" or "")
    result = result .. (language ~= "" and "'''Sprache:''' " .. language .. "\n" or "")
    result = result .. (location ~= "" and "'''Standort:''' " .. location .. "\n" or "")
    result = result .. (price ~= "" and "'''Preis:''' " .. price .. "\n" or "")
    result = result .. (dnbID ~= "" and "'''DNB-ID:''' [[https://d-nb.info/" .. dnbID .. "]]\n" or "")
    result = result .. (summary ~= "" and "'''Inhaltszusammenfassung:''' " .. summary .. "\n" or "")

    -- Coverbild
    local defaultCover = "Library:Cover:BuchDefault.webp"
    local coverImage = helper.getCoverImage(cover, defaultCover)
    result = result .. "\n" .. coverImage

    return result
end

return buch