이 모듈에 대한 설명문서는 모듈:ZC/RecentEditsCount/설명문서에서 만들 수 있습니다
local p = {}
-- API 호출을 통해 최근 편집 기록을 가져와 편집 횟수를 반환하는 함수
function p.getEditCount(frame)
local title = frame.args[1] -- 틀에서 전달된 문서 제목
local days = 30 -- 조회할 기간 (30일)
-- API 호출을 위한 URL 형식 지정
local api_url = mw.uri.fullUrl('api.php', {
action = 'query',
format = 'json',
prop = 'revisions',
titles = title,
rvlimit = 'max',
rvprop = 'timestamp',
rvend = mw.timestamp.timestampMw('now') - days * 86400 -- 최근 30일 기준
})
-- API 호출
local api_response = mw.ext.data.getJSON{ url = api_url }
-- API 결과 로그로 출력 (디버깅용)
if not api_response then
mw.log("API 호출 실패: 응답이 nil입니다.") -- 실패 로그
return "API 호출 실패: 응답이 nil입니다."
end
-- API 결과가 올바른지 확인
if not api_response.query or not api_response.query.pages then
mw.log("올바른 API 결과가 아님")
mw.logObject(api_response)
return "올바른 API 결과가 아님"
end
local pages = api_response.query.pages
local editCount = 0 -- 편집 횟수 카운트
-- 각 페이지의 편집 기록을 순회하면서 편집 횟수 추적
for _, page in pairs(pages) do
if page.revisions and #page.revisions > 0 then -- revisions 배열이 비어 있지 않은지 확인
-- revisions 배열이 있는 경우 편집 횟수를 셈
for _, rev in ipairs(page.revisions) do
if rev and rev.timestamp then -- rev가 nil이 아닌지 확인
editCount = editCount + 1
end
end
else
mw.log("이 페이지의 revisions가 비어 있습니다: " .. tostring(page.title))
end
end
-- 편집 횟수 반환
return tostring(editCount)
end
return p