This repository has been archived on 2023-05-27. You can view files and clone it, but cannot push or open issues or pull requests.
fediverse-imagebot/src/local.ts

53 lines
1.7 KiB
TypeScript

import { createReadStream, ReadStream } from "fs";
import { readdir } from "fs/promises";
import { exit } from "process";
import args from "./helpers/cli";
import crashHandler from "./helpers/errors";
import post from "./post";
export default async function getLocalImage() {
const sfw_files: string[] = await readdir(`${args.directory}/sfw`).catch(e => {
crashHandler("Error reading SFW image directory.", e);
return [];
});
const nsfw_files: string[] = await readdir(`${args.directory}/nsfw`).catch(e => {
crashHandler("Error reading NSFW image directory.", e);
return [];
});
const random = Math.floor(Math.random() * (sfw_files.length + nsfw_files.length));
// Filler that is used to get a random file from the directories
let image: ReadStream;
let sensitivity: boolean;
let file = "";
if (random >= sfw_files.length) {
// Image is NSFW, mark it sensitive
file = `${args.directory}/nsfw/${nsfw_files[ random - sfw_files.length ]}`;
image = createReadStream(file)
.on("error", (err: Error) => {
crashHandler(`Error reading file "${file}"`, err);
});
sensitivity = true;
}
else {
// Image is SFW, mark it not sensitive
file = `${args.directory}/sfw/${sfw_files[ random]}`;
image = createReadStream(file)
.on("error", (err: Error) => {
crashHandler(`Error reading file "${file}"`, err);
});
sensitivity = false;
}
if (args.verbose) {
console.error(`File being sent: ${file}`);
console.error(`Sensitivity: ${sensitivity}`);
}
await post(image, sensitivity);
exit(0);
}
getLocalImage();