mirror of
https://github.com/captbaritone/webamp.git
synced 2026-01-23 18:25:30 +00:00
109 lines
3 KiB
JavaScript
Executable file
109 lines
3 KiB
JavaScript
Executable file
#!/usr/bin/env node
|
|
import path from "path";
|
|
import fs from "fs";
|
|
import { db, knex } from "./db";
|
|
import { argv } from "yargs";
|
|
import logger from "./logger";
|
|
import DiscordWinstonTransport from "./DiscordWinstonTransport";
|
|
import * as Skins from "./data/skins";
|
|
import Discord from "discord.js";
|
|
import { tweet } from "./tasks/tweet";
|
|
import { addSkinFromBuffer } from "./addSkin";
|
|
import { PROJECT_ROOT } from "./config";
|
|
|
|
async function main() {
|
|
const client = new Discord.Client();
|
|
// The Winston transport logs in the client.
|
|
await DiscordWinstonTransport.addToLogger(client, logger);
|
|
|
|
try {
|
|
switch (argv._[0]) {
|
|
case "tweet":
|
|
await tweet(client, null);
|
|
break;
|
|
case "metadata": {
|
|
const hash = argv._[1];
|
|
console.log(Skins.getInternetArchiveUrl(hash));
|
|
break;
|
|
}
|
|
case "skin": {
|
|
const hash = argv._[1];
|
|
logger.info({ hash });
|
|
console.log(await Skins.getSkinByMd5_DEPRECATED(hash));
|
|
break;
|
|
}
|
|
|
|
case "stats": {
|
|
console.log(await Skins.getStats());
|
|
break;
|
|
}
|
|
case "add": {
|
|
const filePath = argv._[1];
|
|
const buffer = fs.readFileSync(filePath);
|
|
console.log(await addSkinFromBuffer(buffer, filePath, "cli-user"));
|
|
break;
|
|
}
|
|
case "sql": {
|
|
const filePath = argv._[1];
|
|
const skins = await Skins.getMuseumPageSql({ offset: 0, first: 70000 });
|
|
const firstNSFW = skins.findIndex((item) => item.rejected);
|
|
console.log(firstNSFW);
|
|
// console.log(await Skins.getMuseumPage({ offset: 100, first: 100 }));
|
|
|
|
break;
|
|
}
|
|
case "nsfw": {
|
|
console.log(await Skins.getSkinToReviewForNsfw());
|
|
break;
|
|
}
|
|
case "index": {
|
|
console.log(await Skins.updateSearchIndex(argv._[1]));
|
|
break;
|
|
}
|
|
case "confirm-nsfw-predictions": {
|
|
const md5s = await Skins.getMissingNsfwPredictions();
|
|
console.log(`Found ${md5s.length} to predict`);
|
|
|
|
for (const md5 of md5s) {
|
|
try {
|
|
await Skins.computeAndSetNsfwPredictions(md5);
|
|
} catch (e) {
|
|
console.error(e);
|
|
}
|
|
}
|
|
console.log("Done.");
|
|
break;
|
|
}
|
|
case "tweet-data": {
|
|
// From running `tweet.py sort`
|
|
const file = fs.readFileSync(
|
|
path.join(PROJECT_ROOT, "../tweetBot/likes.txt"),
|
|
{ encoding: "utf8" }
|
|
);
|
|
|
|
const lines = file.split("\n");
|
|
for (const line of lines) {
|
|
if (line == null || line === "") {
|
|
return;
|
|
}
|
|
const [md5, likes, tweetId] = line.split(" ");
|
|
console.log({ md5, likes, tweetId });
|
|
await Skins.setTweetInfo(md5, Number(likes), tweetId);
|
|
}
|
|
|
|
console.log("done");
|
|
break;
|
|
}
|
|
|
|
default:
|
|
console.log(`Unknown command ${argv._[0]}`);
|
|
}
|
|
} finally {
|
|
knex.destroy();
|
|
db.close();
|
|
logger.close();
|
|
client.destroy();
|
|
}
|
|
}
|
|
|
|
main();
|