Work The Dial - 511V41's diary

<–– Back

che-decoderっていうツールを作った

511V41/che-decoder

カルネージハートエクサでは自分が作った機体でチームを組んだものをファイルとしてエクスポートして共有できる機能がある。

それでいくつかアップローダがあって、そういうところからダウンロードしてきてインポートできる。

…のだけれど、アップされたチームのデータは大量にあるので、自分が欲しいそれを特定するのが少々面倒になってくる。基本的には一度すべてPSPのメモリースティックに入れてインポートメニューで一覧から探し出さなければいけない。

いや流石にそれはキツいでしょ、ということで中身を読めるツールがあると便利。なので作ったという次第。

一例だけど、これを使って既に閉鎖された公式アップローダ「SATLOKE」のバックアップから欲しい機体を探せます。

// 現状これで動くというだけで将来的には動かないかもしれません
const query = process.argv[2];

const fs = require('fs').promises;
const util = require('util');
const exec = util.promisify(require('child_process').exec);

const main = async () => {
  const list = await fs.readdir("./TeamDatas");
  for (let i = 0; i < list.length; i++) {
    if (list[i].includes(".che") || list[i].includes(".CHE")) {
      const { stdout, stderr } = await exec(`che-decode -f ./TeamDatas/${list[i]}`);
      if (stderr) {
        console.error(list[i], stderr);
        process.exit(1);
      }
      if (stdout.includes(query)) {
        console.info(list[i], stdout);
      }
    }
  }
};

main();

こんな感じです。

大量のバイナリとにらめっこしてなんとか使えるようなところまで持ってきたので、みなさんもぜひ活用してください。

以上