generated at
井戸端日記の盛り上がりを文字数を使用して観測
bsahd
take 1
調子よくいっているので、グラフにしたい
nodeplotlibを使う
並列取得する
曜日との相関もありそう
順序がそろってない
並列処理後の順序をどうにかする
活動指標としての文字数を扱うときに対数に変換してたmtane0412
長期間取得する
初期は抜けがありそうなので404対応する
2020/10/09が最初
2020年10月1日から
アイコンを検知する

index.js
//@ts-check const fs = require("fs").promises; const { plot, stack, clear } = require("nodeplotlib"); const weekDay = ["日", "月", "火", "水", "木", "金", "土"]; // @ts-ignore const Plot = require("nodeplotlib").Plot; /** * @type {Plot} */ const data = [ { x: [], y: [], type: "bar", }, ]; /** * * @param {Date} date * @param {string} sep * @returns {string} */ function formatDate(date, sep) { const yyyy = date.getFullYear(); const mm = ("00" + (date.getMonth() + 1)).slice(-2); const dd = ("00" + date.getDate()).slice(-2); return `${yyyy}${sep}${mm}${sep}${dd}`; } /** * * @param {string} url * @param {number} n * @returns {Promise<Response>} */ const fetch_retry = async (url, n) => { try { console.log(url, n); return await fetch(url); } catch (err) { if (n === 1) { throw err; } return await fetch_retry(url, n - 1); } }; /** * * @param {number} index * @return {Promise<{datetext2:String,leng:Number}>} */ const sub1 = async (index) => { const date = new Date(Date.now()); date.setDate(date.getDate() + index); const datetext = formatDate(date, "/"); const datetext2 = ( formatDate(date, "/") + "(" + weekDay[date.getDay()] + ")" ).slice(2); const pglisttempreq = await fetch_retry( `https://scrapbox.io/api/pages/villagepump/${encodeURIComponent( datetext )}/text`, 15 ); const pglisttemptxt = await pglisttempreq.text(); if (pglisttempreq.status == 200) { console.log(datetext2, pglisttemptxt.length); return { datetext2, leng: pglisttemptxt.length }; } else { console.error(datetext2, "not found"); return { datetext2, leng: 0 }; } }; const main = async () => { const promises = []; for (let index = -1460; index < 0; index++) { promises.push(sub1(index)); } const res = await Promise.all(promises); res.forEach((obj) => { data[0].x.push(obj.datetext2); data[0].y.push(obj.leng); }); stack(data); plot(); }; main();