« Module:ZoteroData » : différence entre les versions

De alcolois
Aller à la navigation Aller à la recherche
Création du module
 
Nouvelle mouture -> Erreur Lua dans Module:ZoteroData à la ligne 5: bad argument #1 to 'encode' (string expected, got nil).
 
Ligne 2 : Ligne 2 :


function p.getZoteroItemsFromTitle(frame)
function p.getZoteroItemsFromTitle(frame)
local title = frame.args["title"]
local title = frame.args["title"] or frame.args[1]
if not title or title == "" then
return "Erreur : aucun titre fourni."
end
 
local url = "https://api.zotero.org/groups/4893620/items?q=" .. mw.uri.encode(title) .. "&qmode=everything&format=json"
local url = "https://api.zotero.org/groups/4893620/items?q=" .. mw.uri.encode(title) .. "&qmode=everything&format=json"


Ligne 16 : Ligne 20 :
}
}
}
}
if not data or #data == 0 then
return "Aucun résultat trouvé pour « " .. title .. " »."
end


local html = mw.html.create("table"):addClass("wikitable sortable")
local html = mw.html.create("table"):addClass("wikitable sortable")
Ligne 27 : Ligne 35 :
for _, item in ipairs(data) do
for _, item in ipairs(data) do
local row = html:tag("tr")
local row = html:tag("tr")
row:tag("td"):wikitext(item.key)
row:tag("td"):wikitext(item.key or "")
row:tag("td"):wikitext(item.title)
row:tag("td"):wikitext(item.title or "")
row:tag("td"):wikitext(item.creators)
row:tag("td"):wikitext(item.creators or "")
row:tag("td"):wikitext(item.date)
row:tag("td"):wikitext(item.date or "")
row:tag("td"):wikitext(item.type)
row:tag("td"):wikitext(item.type or "")
end
end



Dernière version du 3 juin 2025 à 15:06

La documentation pour ce module peut être créée à Module:ZoteroData/doc

local p = {}

function p.getZoteroItemsFromTitle(frame)
	local title = frame.args["title"] or frame.args[1]
	if not title or title == "" then
		return "Erreur : aucun titre fourni."
	end

	local url = "https://api.zotero.org/groups/4893620/items?q=" .. mw.uri.encode(title) .. "&qmode=everything&format=json"

	local data = mw.ext.externalData.getExternalData{
		url = url,
		format = "json",
		data = {
			"key=key",
			"title=data.title",
			"creators=data.creators[1].lastName",
			"date=data.date",
			"type=data.itemType"
		}
	}

	if not data or #data == 0 then
		return "Aucun résultat trouvé pour « " .. title .. " »."
	end

	local html = mw.html.create("table"):addClass("wikitable sortable")
	html:tag("tr")
		:tag("th"):wikitext("Clé"):done()
		:tag("th"):wikitext("Titre"):done()
		:tag("th"):wikitext("Auteur"):done()
		:tag("th"):wikitext("Date"):done()
		:tag("th"):wikitext("Type"):done()

	for _, item in ipairs(data) do
		local row = html:tag("tr")
		row:tag("td"):wikitext(item.key or "")
		row:tag("td"):wikitext(item.title or "")
		row:tag("td"):wikitext(item.creators or "")
		row:tag("td"):wikitext(item.date or "")
		row:tag("td"):wikitext(item.type or "")
	end

	return tostring(html)
end

return p