Zuletzt bearbeitet vor 3 Monaten
von Xineohp1506

Modul:Publikation/Related: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(28 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
local serieRelated = {}
local related = {}
local getArgs = require("Module:Arguments").getArgs


function serieRelated.getRelatedBooks(seriesTitle)
function related.buchRelated(frame)
     -- Sicherstellen, dass seriesTitle ein String ist
    if not mw.smw then
     seriesTitle = type(seriesTitle) == "string" and mw.text.trim(seriesTitle) or ""
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end
 
    -- Eingabeparameter
    local args = getArgs(frame)
    local series = args["series"]
    local limit = tonumber(args["limit"]) or 5 -- Standardlimit, falls nicht angegeben
    local defaultCover = args["defaultCover"] -- Standard-Cover von der spezifischen Seite übergeben
 
     -- Sicherstellen, dass die Serie übergeben wurde
    if not series or series == "" then
        return "Keine Serie angegeben."
    end
 
    -- Abfrage-String erstellen
     local query = string.format(
        "[[Hat Serie::%s]]|?Hat Titel|?Band|?Standort|?Inhaltszusammenfassung|?Hat Cover|limit=%d",
        series,
        limit
    )
 
    -- Abfrage ausführen
    local queryResult = mw.smw.getQueryResult(query)
 
    -- Kein Ergebnis gefunden
    if not queryResult or not queryResult.results then
        return "Keine Ergebnisse gefunden."
    end
 
    -- Tabelle erstellen
    local output = '<table class="wikitable sortable table">'
    output = output .. '<tr><th>Cover</th><th>Titel</th><th>Band</th><th>Standort</th><th>Inhaltszusammenfassung</th></tr>'
 
    -- Ergebnisse verarbeiten
    for _, result in ipairs(queryResult.results) do
        -- Titel extrahieren und verlinken
        local title = result.fulltext or "Unbekannt"
        local titleLink = '[[' .. title .. '|' .. (result.printouts["Hat Titel"] and result.printouts["Hat Titel"][1] or title) .. ']]'
 
        -- Band, Standort und Inhaltszusammenfassung extrahieren
        local band = result.printouts["Band"] and result.printouts["Band"][1] or "N/A"
        local standort = result.printouts["Standort"] and result.printouts["Standort"][1] or "N/A"
        local summary = result.printouts["Inhaltszusammenfassung"] and result.printouts["Inhaltszusammenfassung"][1] or ""
 
        -- Coverbild verarbeiten
        local cover = result.printouts["Hat Cover"] and result.printouts["Hat Cover"][1]
        local coverImage = cover and '[[File:Library:' .. cover .. '|100px|link=' .. title .. ']]'
            or (defaultCover and '[[File:Library:' .. defaultCover .. '|100px|link=' .. title .. ']]' or "Kein Cover verfügbar")
 
        -- Zeile hinzufügen
        output = output .. string.format(
            '<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>',
            coverImage,
            titleLink,
            band,
            standort,
            summary
        )
    end
 
    output = output .. '</table>'
    return output
end
 
function related.similarArticles(frame)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end
 
    local args = getArgs(frame)
    local keywords = args["Keyword"]
    local limit = tonumber(args["limit"]) or 5
    local query = ""
 
    -- Baue die Abfrage dynamisch für alle Schlüsselwörter
    if keywords then
        for keyword in mw.text.gsplit(keywords, ",") do
            keyword = mw.text.trim(keyword)
            query = query .. "[[Keyword::" .. keyword .. "]]"
        end
    end
    query = query .. "|?Hat Titel|limit=" .. tostring(limit)
 
    -- Führe die Abfrage aus
    local queryResult = mw.smw.getQueryResult(query)
 
    -- Kein Ergebnis gefunden
    if not queryResult or not queryResult.results then
        return "Keine ähnlichen Artikel gefunden."
    end
 
    -- Ergebnisse formatieren
    local output = '<ul>'
    for _, result in ipairs(queryResult.results) do
        local title = result.printouts["Hat Titel"] and result.printouts["Hat Titel"][1] or result.fulltext or "Unbekannt"
        output = output .. '<li>[[ ' .. result.fulltext .. '|' .. title .. ' ]]</li>'
    end
    output = output .. '</ul>'
 
    return output
end
 
function related.generateTable(args)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end
 
    local query = args.query or ""
    local limit = tonumber(args.limit) or 10
 
    -- Führe die Abfrage aus
    local queryResult = mw.smw.getQueryResult(query .. "|limit=" .. limit)


     if seriesTitle == "" then
     if not queryResult or not queryResult.results then
         return "Kein Serienname angegeben."
         return "Keine Ergebnisse gefunden."
     end
     end


     local query = "[[Hat Serie::" .. seriesTitle .. "]]|?Titel|?Autor|?Band|limit=100"
    -- Tabelle erstellen
     local result = mw.smw.getQueryResult(query)
     local output = '<table class="wikitable sortable table">'
    local booksList = ""
     output = output .. '<tr><th>Titel</th><th>Erscheinungsjahr</th><th>Typ</th><th>Genre</th></tr>'


     -- Überprüfen, ob Ergebnisse vorliegen
     for _, result in ipairs(queryResult.results) do
    if result and result.results and next(result.results) then
         local title = result.fulltext or "Unbekannt"
         booksList = '<ul>'
         local linkTitle = result.printouts["Hat Titel"] and result.printouts["Hat Titel"][1] or title
         for page, data in pairs(result.results) do
        local year = result.printouts["Erscheinungsjahr"] and result.printouts["Erscheinungsjahr"][1] or "N/A"
            local band = data.properties["Band"] and data.properties["Band"][1] or "Unbekannt"
        local typ = result.printouts["Typ"] and result.printouts["Typ"][1] or "N/A"
            local titel = data.properties["Titel"] and data.properties["Titel"][1] or page
        local genre = result.printouts["Keyword"] and table.concat(result.printouts["Keyword"], ", ") or "N/A"
            booksList = booksList .. '<li>[[ ' .. page .. ' | Band ' .. band .. ': ' .. titel .. ']]</li>'
 
        output = output .. string.format(
            '<tr><td>[[%s|%s]]</td><td>%s</td><td>%s</td><td>%s</td></tr>',
            title, linkTitle, year, typ, genre
        )
    end
 
    output = output .. '</table>'
    return output
end
 
function related.similarAutor(frame)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end
 
    local args = getArgs(frame)
    local genres = args["Genres"]
    local limit = tonumber(args["limit"]) or 5
    local query = ""
 
    -- Baue die Abfrage dynamisch für alle Schlüsselwörter
    if genres then
        for genre in mw.text.gsplit(genres, ",") do
            genre = mw.text.trim(genre)
            query = query .. "[[Genre::" .. genre .. "]]"
         end
         end
        booksList = booksList .. '</ul>'
    else
        booksList = "Keine Bücher gefunden."
     end
     end
    query = query .. "|?Hat Titel|limit=" .. tostring(limit)
    -- Führe die Abfrage aus
    local queryResult = mw.smw.getQueryResult(query)
    -- Kein Ergebnis gefunden
    if not queryResult or not queryResult.results then
        return "Keine ähnlichen Artikel gefunden."
    end
    -- Ergebnisse formatieren
    local output = '<ul>'
    for _, result in ipairs(queryResult.results) do
        local title = result.printouts["Hat Titel"] and result.printouts["Hat Titel"][1] or result.fulltext or "Unbekannt"
        output = output .. '<li>[[ ' .. result.fulltext .. '|' .. title .. ' ]]</li>'
    end
    output = output .. '</ul>'


     return booksList
     return output
end
end


return serieRelated
return related

Aktuelle Version vom 30. November 2024, 02:06 Uhr

Die Dokumentation für dieses Modul kann unter Modul:Publikation/Related/Doku erstellt werden

local related = {}
local getArgs = require("Module:Arguments").getArgs

function related.buchRelated(frame)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end

    -- Eingabeparameter
    local args = getArgs(frame)
    local series = args["series"]
    local limit = tonumber(args["limit"]) or 5 -- Standardlimit, falls nicht angegeben
    local defaultCover = args["defaultCover"] -- Standard-Cover von der spezifischen Seite übergeben

    -- Sicherstellen, dass die Serie übergeben wurde
    if not series or series == "" then
        return "Keine Serie angegeben."
    end

    -- Abfrage-String erstellen
    local query = string.format(
        "[[Hat Serie::%s]]|?Hat Titel|?Band|?Standort|?Inhaltszusammenfassung|?Hat Cover|limit=%d",
        series,
        limit
    )

    -- Abfrage ausführen
    local queryResult = mw.smw.getQueryResult(query)

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

    -- Tabelle erstellen
    local output = '<table class="wikitable sortable table">'
    output = output .. '<tr><th>Cover</th><th>Titel</th><th>Band</th><th>Standort</th><th>Inhaltszusammenfassung</th></tr>'

    -- Ergebnisse verarbeiten
    for _, result in ipairs(queryResult.results) do
        -- Titel extrahieren und verlinken
        local title = result.fulltext or "Unbekannt"
        local titleLink = '[[' .. title .. '|' .. (result.printouts["Hat Titel"] and result.printouts["Hat Titel"][1] or title) .. ']]'

        -- Band, Standort und Inhaltszusammenfassung extrahieren
        local band = result.printouts["Band"] and result.printouts["Band"][1] or "N/A"
        local standort = result.printouts["Standort"] and result.printouts["Standort"][1] or "N/A"
        local summary = result.printouts["Inhaltszusammenfassung"] and result.printouts["Inhaltszusammenfassung"][1] or ""

        -- Coverbild verarbeiten
        local cover = result.printouts["Hat Cover"] and result.printouts["Hat Cover"][1]
        local coverImage = cover and '[[File:Library:' .. cover .. '|100px|link=' .. title .. ']]'
            or (defaultCover and '[[File:Library:' .. defaultCover .. '|100px|link=' .. title .. ']]' or "Kein Cover verfügbar")

        -- Zeile hinzufügen
        output = output .. string.format(
            '<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>',
            coverImage,
            titleLink,
            band,
            standort,
            summary
        )
    end

    output = output .. '</table>'
    return output
end

function related.similarArticles(frame)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end

    local args = getArgs(frame)
    local keywords = args["Keyword"]
    local limit = tonumber(args["limit"]) or 5
    local query = ""

    -- Baue die Abfrage dynamisch für alle Schlüsselwörter
    if keywords then
        for keyword in mw.text.gsplit(keywords, ",") do
            keyword = mw.text.trim(keyword)
            query = query .. "[[Keyword::" .. keyword .. "]]"
        end
    end
    query = query .. "|?Hat Titel|limit=" .. tostring(limit)

    -- Führe die Abfrage aus
    local queryResult = mw.smw.getQueryResult(query)

    -- Kein Ergebnis gefunden
    if not queryResult or not queryResult.results then
        return "Keine ähnlichen Artikel gefunden."
    end

    -- Ergebnisse formatieren
    local output = '<ul>'
    for _, result in ipairs(queryResult.results) do
        local title = result.printouts["Hat Titel"] and result.printouts["Hat Titel"][1] or result.fulltext or "Unbekannt"
        output = output .. '<li>[[ ' .. result.fulltext .. '|' .. title .. ' ]]</li>'
    end
    output = output .. '</ul>'

    return output
end

function related.generateTable(args)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end

    local query = args.query or ""
    local limit = tonumber(args.limit) or 10

    -- Führe die Abfrage aus
    local queryResult = mw.smw.getQueryResult(query .. "|limit=" .. limit)

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

    -- Tabelle erstellen
    local output = '<table class="wikitable sortable table">'
    output = output .. '<tr><th>Titel</th><th>Erscheinungsjahr</th><th>Typ</th><th>Genre</th></tr>'

    for _, result in ipairs(queryResult.results) do
        local title = result.fulltext or "Unbekannt"
        local linkTitle = result.printouts["Hat Titel"] and result.printouts["Hat Titel"][1] or title
        local year = result.printouts["Erscheinungsjahr"] and result.printouts["Erscheinungsjahr"][1] or "N/A"
        local typ = result.printouts["Typ"] and result.printouts["Typ"][1] or "N/A"
        local genre = result.printouts["Keyword"] and table.concat(result.printouts["Keyword"], ", ") or "N/A"

        output = output .. string.format(
            '<tr><td>[[%s|%s]]</td><td>%s</td><td>%s</td><td>%s</td></tr>',
            title, linkTitle, year, typ, genre
        )
    end

    output = output .. '</table>'
    return output
end

function related.similarAutor(frame)
    if not mw.smw then
        return "Semantic MediaWiki-Erweiterung nicht gefunden."
    end

    local args = getArgs(frame)
    local genres = args["Genres"]
    local limit = tonumber(args["limit"]) or 5
    local query = ""

    -- Baue die Abfrage dynamisch für alle Schlüsselwörter
    if genres then
        for genre in mw.text.gsplit(genres, ",") do
            genre = mw.text.trim(genre)
            query = query .. "[[Genre::" .. genre .. "]]"
        end
    end
    query = query .. "|?Hat Titel|limit=" .. tostring(limit)

    -- Führe die Abfrage aus
    local queryResult = mw.smw.getQueryResult(query)

    -- Kein Ergebnis gefunden
    if not queryResult or not queryResult.results then
        return "Keine ähnlichen Artikel gefunden."
    end

    -- Ergebnisse formatieren
    local output = '<ul>'
    for _, result in ipairs(queryResult.results) do
        local title = result.printouts["Hat Titel"] and result.printouts["Hat Titel"][1] or result.fulltext or "Unbekannt"
        output = output .. '<li>[[ ' .. result.fulltext .. '|' .. title .. ' ]]</li>'
    end
    output = output .. '</ul>'

    return output
end

return related