Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 4: | Zeile 4: | ||
local buch = {} | local buch = {} | ||
-- Funktion | -- Funktion zum holen des Seitentitels mithilfe der Serien-ID | ||
function buch. | function buch.getSeriesPageTitle(frame) | ||
if not mw.smw then | if not mw.smw then | ||
return "Semantic MediaWiki-Erweiterung nicht gefunden." | return "Semantic MediaWiki-Erweiterung nicht gefunden." | ||
end | end | ||
local queryResult = mw.smw.getQueryResult(frame.args) | local queryResult = mw.smw.getQueryResult(frame.args) | ||
-- Kein Ergebnis | -- Kein Ergebnis gefunden | ||
if queryResult | if not queryResult or not queryResult.results or not queryResult.results[1] then | ||
return "Keine Ergebnisse gefunden." | return "Keine Ergebnisse gefunden." | ||
end | end | ||
-- | -- Seitentitel extrahieren | ||
local results = queryResult.results | local results = queryResult.results | ||
if | if results[1].fulltext then | ||
return | return results[1].fulltext | ||
else | else | ||
return "Kein Seitentitel gefunden." | return "Kein Seitentitel gefunden." | ||
Zeile 35: | Zeile 26: | ||
end | end | ||
-- Funktion zur Extraktion der Gesamtbände aus der Serienseite | |||
function buch.getCompleteVolumesByTitle(frame) | function buch.getCompleteVolumesByTitle(frame) | ||
if not mw.smw then | if not mw.smw then |
Version vom 21. November 2024, 23:59 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(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