« Module:ZoteroAPI » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| Ligne 1 : | Ligne 1 : | ||
local p = {} | local p = {} | ||
local cachedData = nil -- 🔒 Cache unique pour la durée d'exécution de la page | local cachedData = nil -- 🔒 Cache unique pour la durée d'exécution de la page | ||
-- Fonction d'aide pour appeler #get_web_data via preprocess | |||
function p._getWebDataViaParser(frame, url) | |||
local webDataCall = '{{#get_web_data:url=' .. url .. '|format=json}}' | |||
local result = frame:preprocess(webDataCall) | |||
return result | |||
end | |||
-- Fonction de récupération de données Zotero par itemKey | -- Fonction de récupération de données Zotero par itemKey | ||
| Ligne 20 : | Ligne 27 : | ||
local url = 'https://api.zotero.org/groups/4893620/items/' .. itemKey .. '?include=data&format=json' | local url = 'https://api.zotero.org/groups/4893620/items/' .. itemKey .. '?include=data&format=json' | ||
-- Récupérer les données via le parser | |||
local jsonData = p._getWebDataViaParser(frame, url) | |||
-- Récupérer les données | |||
local | |||
-- Si pas de données, retourner nil | |||
if not jsonData or jsonData == "" then | |||
-- | |||
if not jsonData | |||
return nil | return nil | ||
end | end | ||
-- Décoder le JSON | -- Décoder le JSON | ||
local | local success, decoded = pcall(mw.text.jsonDecode, jsonData) | ||
if not success or not decoded then | if not success or not decoded then | ||
return nil | return nil | ||
end | end | ||
-- | -- Extraire les données de la réponse | ||
if decoded.data then | if decoded.data then | ||
cachedData = decoded.data | cachedData = decoded.data | ||
| Ligne 86 : | Ligne 52 : | ||
end | end | ||
-- Fonction de débogage de | -- Fonction de débogage pour tester la récupération de données | ||
function p. | function p.debugGetData(frame) | ||
local itemKey = frame and frame.args[1] | local itemKey = frame and frame.args[1] | ||
| Ligne 96 : | Ligne 62 : | ||
local url = 'https://api.zotero.org/groups/4893620/items/' .. itemKey .. '?include=data&format=json' | local url = 'https://api.zotero.org/groups/4893620/items/' .. itemKey .. '?include=data&format=json' | ||
-- Tester | -- Tester la récupération directe via le parser | ||
local | local jsonData = p._getWebDataViaParser(frame, url) | ||
if not jsonData or jsonData == "" then | |||
return "Pas de données récupérées via #get_web_data" | |||
if | |||
end | end | ||
-- | -- Limiter la taille pour l'affichage | ||
if #jsonData > 1000 then | |||
jsonData = jsonData:sub(1, 1000) .. "... (tronqué)" | |||
end | end | ||
return | return "Données récupérées (longueur: " .. #jsonData .. "):\n\n" .. jsonData | ||
end | end | ||