村田の黙示録

雑な記録。目標は3割30本。

皆伝に向けてモチベ維持したいので週末コーディングした

皆伝曲の最小ミスカンをグラフ化できるようにしてみた。

なんか今日、灼熱と冥のミスカン減ったからちゃんと記録していこうと思ってコード書きました。

適当に書いたコードなので好きに使ってください。

成果物

まず、Reflux で日々、全曲のプレイ状況を tsv で取得してます。

github.com

f:id:shmurata:20220417231456p:plain

これらを利用して皆伝課題曲だけ抽出して以下のような csv にできました。

DATE,G59,灼熱Beach_Side_Bunny,卑弥呼,冥
20220123,138,205,376,329
20220125,138,205,376,329
20220126,138,205,376,329
20220127,138,205,376,309
20220130,138,205,376,309
20220131,138,205,376,309
20220204,138,205,376,309
20220205,138,205,376,309
20220206,138,205,376,309
20220208,138,205,376,309
20220209,138,205,376,309
20220211,138,205,376,309
20220213,138,205,376,309
20220214,138,205,376,309
20220223,138,205,376,273
20220314,138,205,376,246
20220318,138,205,376,246
20220329,138,205,376,207
20220413,138,205,376,207
20220416,138,205,376,207
20220417,138,181,376,197

このデータを Google スプレッドシートにぶち込むと、こんな感じでグラフを作れます。

f:id:shmurata:20220417231633p:plain

これでなんとなく、記録しておけば、皆伝合格までの最小ミスカン推移が分かるって寸法です。

コード置いとくので使い方が分かる方はご利用ください。

const fs = require("fs");
const tsv = require('tsv');
const _ = require('lodash');
const os = require('os');

const KAIDEN = [
    "G59", 
    "灼熱Beach Side Bunny",
    "卑弥呼",
    "冥"
];
// csv のヘッダー
// 灼熱はスペース区切りを_区切りに変更
let resultCsv = "DATE," + KAIDEN[0] + "," + KAIDEN[1].replace(/\s/g, "_") + "," + KAIDEN[2] + "," + KAIDEN[3]; 

// ファイルのパス指定
const baseFilePath = "D:\\workspace\\Reflux\\Reflux\\bin\\Release\\netcoreapp3.1\\";

// tsv だけを抽出
const filenames = fs.readdirSync(baseFilePath);
const files = _.filter(filenames, function(filename) {
    return filename.match(/^tracker.*\.tsv$/);
});

// あとから使うので日付だけ抽出しとく
const dates = [];
_.forEach(files, function (file){
    dates.push(file.substr(7 , 8));
});

let tsvAsObj;
// ファイルの数だけ回して tsv をロードする
_.forEach(dates, function (date) {
    const tsvPath = baseFilePath + "tracker" + date + ".tsv";
    resultCsv = resultCsv + os.EOL + date;
    try {
        const buff = fs.readFileSync(tsvPath, "utf8");
        tsvAsObj = tsv.parse(buff);
    } catch (e) {
        console.log(e);
    }
    // 皆伝の楽曲のミスカン取得して csv に書き出し
    _.forEach(KAIDEN, function (KAIDEN_SONG) {
        const kadai = _.filter(tsvAsObj, ["title", KAIDEN_SONG]);
        resultCsv = resultCsv + "," + kadai[0]["SPA Miss Count"]
    });
});

// アウトプット
console.log(resultCsv);
fs.writeFileSync('./kaiden.csv', resultCsv);

関係ない話

共鳴遊戯の華をイージークリアしました!

マジで嬉しすぎます。ついに地力 S にランプ点灯です。

www.youtube.com