|
|
(25 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
| -- local smw = require('Module:SMW')
| | local buch = {} |
| | local helper = require("Modul:Publikation/SerieHelper") |
| local getArgs = require('Module:Arguments').getArgs | | local getArgs = require('Module:Arguments').getArgs |
|
| |
|
| local buch = {}
| | function buch.render(args) |
| | | -- SerienID aus den Argumenten abrufen |
| -- Funktion zur Extraktion der Gesamtbände aus der Serien-ID
| | local seriesID = args["SerienID"] |
| function buch.getCompleteVolumes(seriesID) | | local seriesPageTitle = helper.getSeriesPageTitle(seriesID) |
| if not mw.smw then
| |
| return "Semantic MediaWiki-Erweiterung nicht gefunden."
| |
| end
| |
| | |
| -- Überprüfung auf Serien-ID | |
| if not seriesID or seriesID == "" then
| |
| return "Keine Serien-ID angegeben."
| |
| end
| |
| | |
| -- Abfrage erstellen
| |
| local query = { ["[[SerienID::" .. seriesID .. "]]"] = "" } -- Keine spezielle Ausgabeanweisung
| |
| local queryResult = mw.smw.getQueryResult(query)
| |
| | |
| -- Kein Ergebnis
| |
| if not queryResult or not queryResult.results then
| |
| return "Keine Ergebnisse gefunden."
| |
| end
| |
| | |
| -- 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 | | return "Serien-ID: " .. seriesID .. ", Serien-Seite: " .. seriesPageTitle |
| end | | end |
|
| |
|
| return buch | | return buch |