Module:NPP backlog

Revision as of 12:04, 20 October 2024 by Muskit Gergous (talk | contribs) (Created page with "local modtime = require('Module:Time').time local data = mw.loadJsonData("Bharatpedia:New pages patrol/Backlog chart/daily") local backlog = { } for k,v in ipairs(data) do backlog[v["date"]] = v["value"] end local function parseDate(date) local ymd = {} for i in string.gmatch(date, "[0-9]+") do table.insert(ymd, i) end ymd = { year = ymd[1], month = ymd[2], day = ymd[3] } return os.time(ymd) end local p = {}; function p._articles(date) return backlog[date]...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This module retrieves the size of the backlog at new pages patrol at the start (UTC) of a given day. It uses the data compiled by User:MuskitBot at Bharatpedia:New pages patrol/Backlog chart/daily.

Note that the data is limited to the last c. 6 months.

Usage

Number of articles in the backlog on date (YYYY-MM-DD format):

{{#invoke:NPP backlog|articles|date}}

Difference between N and the articles backlog on date:

{{#invoke:NPP backlog|diff|N|date}}

If there is no data for date, the module will attempt to estimate by working backwards to the first date with data available. By default, this estimation assumes a one-day difference is being calculated. If not, specify a delta value in days:

{{#invoke:NPP backlog|diff|N|date|delta}}

See also


local modtime = require('Module:Time').time

local data = mw.loadJsonData("Bharatpedia:New pages patrol/Backlog chart/daily")

local backlog = { }
for k,v in ipairs(data) do
	backlog[v["date"]] = v["value"]
end

local function parseDate(date)
	local ymd = {}
	for i in string.gmatch(date, "[0-9]+") do
		table.insert(ymd, i)
	end
	ymd = { year = ymd[1], month = ymd[2], day = ymd[3] }
	return os.time(ymd)
end

local p = {};

function p._articles(date)
	return backlog[date] or 0
end

function p.articles(frame)
	local templateArgs = frame.args
	local date = templateArgs[1] or os.date("%Y-%m-%d")
	return p._articles(date)
end

function p._diff(n1, date, delta)
	local n2 = p._articles(date)
	
	if n2 > 0 then
		return n1 - n2
	else
		local date2 = date
		local days = 0
		while n2 == 0 do
			date2 = os.date("%Y-%m-%d", parseDate(date2) - (60*60*24))
			n2 = p._articles(date2)
			days = days + 1
		end
		return math.floor( ((n1 - n2) / (days + delta)) * delta )
	end
end

function p.diff(frame)
	local templateArgs = frame.args
	local n1 = templateArgs[1]
	local date = templateArgs[2] or os.date("%Y-%m-%d")
	local delta = templateArgs[3] or 1
	return p._diff(n1, date, delta)
end

return p