Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 10: | Zeile 10: | ||
end | end | ||
if not seriesID or seriesID == "" then | if not seriesID or seriesID == "" then | ||
return "Keine Serien-ID angegeben." | return "Keine Serien-ID angegeben." | ||
end | end | ||
local query = { ["[[SerienID::" .. seriesID .. "]]"] = "" } | |||
local query = { ["[[SerienID::" .. seriesID .. "]]"] = "" } | |||
local queryResult = mw.smw.getQueryResult(query) | local queryResult = mw.smw.getQueryResult(query) | ||
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 | ||
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 | ||
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 | ||
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 | ||
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]) | 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