모듈:ZC/RecentEditsCount

이 모듈에 대한 설명문서는 모듈: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