사용자:낙엽1124/스크립트/새 문서 수

최근 편집: 2019년 10월 10일 (목) 22:23

브라우저에서 페미위키 방문 중 디버그 콘솔창에 붙여넣으면 10월 10일부터 일반 이름공간에 생성된 넘겨주기가 아닌 문서 수를 세어서 콘솔로 출력하는 스크립트입니다. 예를 들어 10월 10일 12시 실행한 결과는 다음과 같습니다.

새로 생긴 문서(10개):
- 아달
- 구미식 룸
- 화대
- 성산업
- 쓰리노
- 오너-펫
- 서브미시브
- 펠라치오
- K-래디컬 페미니스트
- 6B
목표일인 2019년 12월 31일까지 81일 남아, 남은 기간 동안 하루에 2.7개의 문서를 만들어야 합니다.
오늘은 10개의 문서를 만들었습니다!

(아래 목표일 어쩌구는 컨텐츠팀 얘기입니다.)

새 문서가 300개가 넘으면 300개까지만 나옵니다.

(async () => {
  "use strict";
  function kstTextToUtcDate(str) {
    return new Date(new Date(str).getTime() - 9 * 60 * 60 * 1000);
  }

  const localStart = "2019-10-10";
  const localEnd = "2019-12-31";
  const goal = 230;
  const now = new Date();
  const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());

  const days = (
    (new Date(kstTextToUtcDate(localEnd)).getTime() - new Date().getTime()) /
    (24 * 60 * 60 * 1000)
  ).toFixed();

  const data = await new mw.Api().get({
    action: "query",
    format: "json",
    list: "recentchanges",
    utf8: 1,
    rcstart: kstTextToUtcDate(localStart).toISOString(),
    rcdir: "newer",
    rcnamespace: 0,
    rcprop: "title|timestamp|redirect",
    rcshow: "!bot",
    rclimit: 300,
    rctype: "new"
  });
  const rc = data.query.recentchanges.filter(
    rc => Object.keys(rc).indexOf("redirect") == -1
  );
  const todayNum = data.query.recentchanges.filter(rc => {
    return (
      Object.keys(rc).indexOf("redirect") == -1 &&
      new Date(rc.timestamp).getTime() >= today.getTime()
    );
  }).length;
  const num = rc.length;
  console.log(
    `새로 생긴 문서(${num}개):\n` + rc.map(rc => `- ${rc.title}`).join("\n")
  );
  console.log(
    `한줄 버전: ` + rc.map(rc => rc.title).join(" / ")
  );
  console.log(
    `목표일인 ${new Date(kstTextToUtcDate(localEnd)).toLocaleDateString("ko", {
      dateStyle: "long"
    })}까지 ${days}일 남아,`,
    `남은 기간 동안 하루에 ${((goal - num) / days).toFixed(
      1
    )}개의 문서를 만들어야 하며\n` +
      `오늘 생긴 문서는 ${todayNum}개 입니다.`
  );
})();