コマンドから日記投稿する
bsahd.icon
動かし方
1. 適当なディレクトリを作る
2. コピペする(ファイル名を合わせて)
3. npm i or equivalent
4. npm run start or equivalent
code:package.json
{
"name": "postdiary",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "tsc && node ."
},
"type": "module",
"keywords": [],
"author": "bsahd",
"dependencies": {
"@types/node": "^22.9.0",
"@types/opener": "^1.4.3",
"open": "^10.1.0",
"ora": "^8.1.1",
"typescript": "^5.6.3"
}
}
code:index.ts
import open from "open";
import fs from "fs/promises";
import path from "path";
import readline from "readline";
import ora from "ora";
const prompt = async (msg: string) => {
console.log(msg);
const answer = await question("> ");
return answer.trim();
};
/**
* 標準入力を取得する
*/
const question = (question: string): Promise<string> => {
const readlineInterface = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
return new Promise((resolve) => {
readlineInterface.question(question, (answer) => {
resolve(answer);
readlineInterface.close();
});
});
};
const sleep = (timeout: number) => {
return new Promise((resolve) => {
setTimeout(resolve, timeout);
});
};
const spinner = ora({ color: "white" });
spinner.text = "ファイルを作成しています...";
spinner.start();
const datenow = new Date(Date.now());
await (async () => {
const fd = await fs.open(path.join(import.meta.dirname, "temp.txt"), "w");
spinner.stopAndPersist();
spinner.text = "ファイルを開いています...";
spinner.start();
const txt = new TextEncoder();
await fd.write(
txt.encode(
datenow.toLocaleString("ja", {
hour12: false,
hourCycle: "h23",
hour: "2-digit",
minute: "2-digit",
})
)
);
await fd.close();
await fd.close();
})();
const pageName = datenow.toLocaleString("ja", {
hour12: false,
hourCycle: "h23",
year: "numeric",
month: "2-digit",
day: "2-digit",
});
spinner.stopAndPersist();
spinner.text = "書き終わったらウインドウを閉じてください...";
spinner.start();
await open("temp.txt", { wait: true });
spinner.stopAndPersist();
spinner.text = "ブラウザを開いています...";
spinner.start();
const fd2 = await fs.readFile(path.join(import.meta.dirname, "temp.txt"), {
encoding: "utf-8",
});
await open(
pageName
)}?body=${encodeURIComponent(fd2)}`,
{ wait: true }
);
spinner.stopAndPersist();
// opens the url in the default browser