mirror of
https://github.com/captbaritone/webamp.git
synced 2026-01-23 18:25:30 +00:00
78 lines
2 KiB
JavaScript
Executable file
78 lines
2 KiB
JavaScript
Executable file
#!/usr/bin/env node
|
|
const argv = require("yargs").argv;
|
|
const findTweetableSkin = require("./tasks/findTweetableSkins");
|
|
const fetchInternetArchiveMetadata = require("./tasks/fetchInternetArchiveMetadata");
|
|
const ensureInternetArchiveItemsIndexByMd5 = require("./tasks/ensureInternetArchiveItemsIndexByMd5");
|
|
const path = require("path");
|
|
const logger = require("./logger");
|
|
const Skins = require("./data/skins");
|
|
const db = require("./db");
|
|
|
|
const { spawn } = require("child_process");
|
|
|
|
function spawnPromise(command, args) {
|
|
return new Promise((resolve, reject) => {
|
|
const ls = spawn(command, args);
|
|
let stdout = "";
|
|
let stderr = "";
|
|
|
|
ls.stdout.on("data", data => {
|
|
stdout += data;
|
|
});
|
|
|
|
ls.stderr.on("data", data => {
|
|
stderr += data;
|
|
console.log(`stderr: ${data}`);
|
|
});
|
|
|
|
ls.on("close", code => {
|
|
console.log(`child process exited with code ${code}`);
|
|
if (code === 0) {
|
|
resolve(stdout);
|
|
} else {
|
|
reject({ stdout, stderr });
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
async function main() {
|
|
switch (argv._[0]) {
|
|
case "tweet":
|
|
const { md5, filename } = await findTweetableSkin();
|
|
const output = await spawnPromise(
|
|
path.resolve(__dirname, "../tweetBot/tweet.py"),
|
|
[
|
|
"tweet",
|
|
md5,
|
|
filename,
|
|
//, "--dry"
|
|
]
|
|
);
|
|
logger.info("Tweeted a skin", { md5, filename, ...output });
|
|
break;
|
|
case "fetch-metadata":
|
|
console.log("Going to download metadata from the Internet Archive");
|
|
await fetchInternetArchiveMetadata();
|
|
break;
|
|
|
|
case "ensure-md5s":
|
|
await ensureInternetArchiveItemsIndexByMd5();
|
|
break;
|
|
case "metadata": {
|
|
const hash = argv._[1];
|
|
console.log(await Skins.getInternetArchiveUrl(hash));
|
|
break;
|
|
}
|
|
case "skin": {
|
|
const hash = argv._[1];
|
|
console.log(await Skins.getSkinByMd5(hash));
|
|
break;
|
|
}
|
|
default:
|
|
console.log(`Unknown command ${argv._[0]}`);
|
|
}
|
|
await db.close();
|
|
}
|
|
|
|
main();
|