Module:ZoteroData

Version datée du 3 juin 2025 à 15:06 par Marc (discussion | contributions) (Nouvelle mouture -> Erreur Lua dans Module:ZoteroData à la ligne 5: bad argument #1 to 'encode' (string expected, got nil).)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

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