Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
(16 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
local smw = require('Module:SMW') | |||
local getArgs = require('Module:Arguments').getArgs | |||
local buch = {} | local buch = {} | ||
-- Funktion | -- Funktion zur Extraktion der Gesamtbände aus der Serien-ID | ||
function buch.getCompleteVolumes(frame) | |||
if not | if not mw.smw then | ||
return | return "Semantic MediaWiki-Erweiterung nicht gefunden." | ||
end | end | ||
-- Überprüfung auf leere Parameter | |||
if frame.args[1] == nil then | |||
return "Keine Abfrageparameter gefunden." | |||
end | |||
-- | -- Abfrage ausführen | ||
local | local queryResult = mw.smw.getQueryResult(frame.args) | ||
if | -- Kein Ergebnis | ||
if queryResult == nil then | |||
return "Keine Ergebnisse gefunden." | |||
end | |||
-- Debugging: Vollständige Struktur anzeigen | |||
-- return "<pre>" .. mw.dumpObject(queryResult) .. "</pre>" | |||
-- Extrahieren des Seitentitels | |||
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." | |||
end | end | ||
end | end | ||
function buch.getCompleteVolumesByTitle(page, attribute) | |||
function buch. | if not mw.smw then | ||
return "Semantic MediaWiki-Erweiterung nicht gefunden." | |||
end | |||
-- | -- Überprüfung auf Seitentitel und Attribut | ||
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) | |||
for | if not result then | ||
return "Keine Ergebnisse gefunden." | |||
end | |||
-- Durchlaufe Ergebnisse, um das Attribut zu extrahieren | |||
for title, data in pairs(result) do | |||
if data[attribute] and type(data[attribute]) == "table" then | |||
return tostring(data[attribute][1]) -- Erster gefundener Wert | |||
end | end | ||
end | end | ||
-- | return "Attribut nicht gefunden." | ||
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 | end | ||
return bandOutput | |||
return | |||
end | end | ||
return buch | return buch |
Aktuelle Version vom 21. November 2024, 21:48 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(frame)
if not mw.smw then
return "Semantic MediaWiki-Erweiterung nicht gefunden."
end
-- Überprüfung auf leere Parameter
if frame.args[1] == nil then
return "Keine Abfrageparameter gefunden."
end
-- Abfrage ausführen
local queryResult = mw.smw.getQueryResult(frame.args)
-- Kein Ergebnis
if queryResult == nil then
return "Keine Ergebnisse gefunden."
end
-- Debugging: Vollständige Struktur anzeigen
-- return "<pre>" .. mw.dumpObject(queryResult) .. "</pre>"
-- Extrahieren des Seitentitels
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."
end
end
function buch.getCompleteVolumesByTitle(page, attribute)
if not mw.smw then
return "Semantic MediaWiki-Erweiterung nicht gefunden."
end
-- Überprüfung auf Seitentitel und Attribut
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)
if not result then
return "Keine Ergebnisse gefunden."
end
-- Durchlaufe Ergebnisse, um das Attribut zu extrahieren
for title, data in pairs(result) do
if data[attribute] and type(data[attribute]) == "table" then
return tostring(data[attribute][1]) -- Erster gefundener Wert
end
end
return "Attribut nicht gefunden."
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