Module:Lua json: Difference between revisions

From Visual Data Wiki
Jump to navigation Jump to search
No edit summary
Tag: Reverted
No edit summary
Tag: Reverted
Line 1: Line 1:
local p = require('Module:Http')
local p = {}
local json = require('Module:Json')
local json = require("Module:Json")


local function queryPages(titleParam, titleValue)
-- Funktion zum Durchsuchen der Seiten nach dem angegebenen Titelwert
     local url = mw.uri.fullUrl('api.php', {action = 'query', format = 'json', list = 'allpages', apnamespace = 486})
function p.getDataByTitle(titleParam, titleValue, targetParam)
    local response = p.get(url)
     local pages = mw.title.new('Special:PrefixIndex/Data:' .. titleValue)
    local data = json.decode(response)


     if not data or not data.query or not data.query.allpages then
    -- Überprüfen, ob die Seiten existieren und durchsuchbar sind
         return {}
     if pages and pages.exists then
    end
         local results = {}


    local pages = {}
        -- Iteration über die Seiten
    for _, page in ipairs(data.query.allpages) do
        for _, page in ipairs(mw.ext.pageinfo.getPagesInCategory(pages.prefixedText)) do
        table.insert(pages, page.title)
            local content = mw.title.new(page.fullText)
    end
           
 
            -- Überprüfen, ob die Seite existiert und das Content-Model JSON ist
    return pages
            if content and content.exists and content.contentModel == "json" then
end
                local data = mw.text.jsonDecode(content:getContent())
 
               
function p.getDataByTitle(titleParam, titleValue, targetParam)
                -- Überprüfen, ob der angegebene Parameter existiert und den richtigen Wert hat
    local pages = queryPages(titleParam, titleValue)
                if data and data[titleParam] == titleValue then
    local results = {}
                    table.insert(results, data[targetParam])
 
                end
    for _, pageTitle in ipairs(pages) do
        local jsonPage = mw.title.new(pageTitle)
        if jsonPage and jsonPage.exists and jsonPage.contentModel == 'json' then
            local content = jsonPage:getContent()
            local jsonData = json.decode(content)
            if jsonData and jsonData[titleParam] == titleValue then
                table.insert(results, jsonData[targetParam])
             end
             end
         end
         end
        -- Rückgabe der Ergebnisse
        return results
    else
        -- Wenn die Seiten nicht existieren oder nicht durchsuchbar sind, wird ein Fehler ausgegeben
        return "Error: Unable to find pages with the given prefix"
     end
     end
    return results
end
end


return p
return p

Revision as of 16:08, 16 March 2024

Documentation for this module may be created at Module:Lua json/doc

local p = {}
local json = require("Module:Json")

-- Funktion zum Durchsuchen der Seiten nach dem angegebenen Titelwert
function p.getDataByTitle(titleParam, titleValue, targetParam)
    local pages = mw.title.new('Special:PrefixIndex/Data:' .. titleValue)

    -- Überprüfen, ob die Seiten existieren und durchsuchbar sind
    if pages and pages.exists then
        local results = {}

        -- Iteration über die Seiten
        for _, page in ipairs(mw.ext.pageinfo.getPagesInCategory(pages.prefixedText)) do
            local content = mw.title.new(page.fullText)
            
            -- Überprüfen, ob die Seite existiert und das Content-Model JSON ist
            if content and content.exists and content.contentModel == "json" then
                local data = mw.text.jsonDecode(content:getContent())
                
                -- Überprüfen, ob der angegebene Parameter existiert und den richtigen Wert hat
                if data and data[titleParam] == titleValue then
                    table.insert(results, data[targetParam])
                end
            end
        end

        -- Rückgabe der Ergebnisse
        return results
    else
        -- Wenn die Seiten nicht existieren oder nicht durchsuchbar sind, wird ein Fehler ausgegeben
        return "Error: Unable to find pages with the given prefix"
    end
end

return p