日記の書き込みからアクティブユーザー数を調べる
https://scrapbox-bundler.vercel.app?url=https://scrapbox.io/api/code/wogikaze/日記の書き込みからアクティブユーザー数を調べる/print.ts&bundle&minify&reload&run
code:print.ts
import { getPage } from "../../takker/scrapbox-userscript-std/rest.ts";
import { patch } from "../../takker/scrapbox-userscript-std/websocket.ts";
import { lightFormat } from "../../wogikaze/date-fns/mod.ts";
import { addDays } from "../../wogikaze/date-fns/mod.ts";
const start = new Date(2020, 8, 1);
const project = "villagepump";
type DateStr = ${number}/${number}/${number};
const toTitle = (date: Date): DateStr => lightFormat(date, "yyyy/MM/dd") as DateStr;
const now = new Date();
let i = start;
const data = new Map<DateStr, number>();
while (toTitle(i) !== toTitle(now)) {
const key = toTitle(i);
const res = await getPage(project, key);
const users = res.ok && res.val.persistent ? res.val.collaborators.length + 1 : 0;
console.debug(${key}: ${users});
data.set(key, users);
i = addDays(i, 1);
}
console.debug(data);
const title = "日記のアクティブユーザー数";
await patch(project, title, () => [
title,
"table:active users",
......data.entries().map((date, num) => ${date}\t${num}),
]);