diff --git a/experiments/skin-database/cli.js b/experiments/skin-database/cli.js index e5e1db53..4c855845 100755 --- a/experiments/skin-database/cli.js +++ b/experiments/skin-database/cli.js @@ -7,6 +7,7 @@ const path = require("path"); const logger = require("./logger"); const Skins = require("./data/skins"); const db = require("./db"); +const S3 = require("./s3"); const { spawn } = require("child_process"); @@ -39,7 +40,12 @@ function spawnPromise(command, args) { async function main() { switch (argv._[0]) { case "tweet": - const { md5, filename } = await findTweetableSkin(); + const tweetableSkin = await findTweetableSkin(); + if(tweetableSkin == null) { + logger.info("Could not find a skin to tweet"); + break; + } + const { md5, filename } = tweetableSkin; const output = await spawnPromise( path.resolve(__dirname, "../tweetBot/tweet.py"), [ @@ -49,6 +55,7 @@ async function main() { //, "--dry" ] ); + S3.markAsTweeted(md5); logger.info("Tweeted a skin", { md5, filename, output }); break; case "fetch-metadata": diff --git a/experiments/skin-database/s3.js b/experiments/skin-database/s3.js index 6d99edb4..cb081144 100644 --- a/experiments/skin-database/s3.js +++ b/experiments/skin-database/s3.js @@ -60,25 +60,23 @@ async function getStats() { getFile("approved.txt"), getFile("rejected.txt"), getFile("tweeted.txt"), - getTweetableSkins() + getTweetableSkins(), ]); return { approved: new Set(getLines(approved)).size, rejected: new Set(getLines(rejected)).size, tweeted: new Set(getLines(tweeted)).size, - tweetable: tweetable.length + tweetable: tweetable.length, }; } async function getSkinToReview() { - console.log("Reading from s3..."); const [filenames, approved, rejected, tweeted] = await Promise.all([ getFile("filenames.txt"), getFile("approved.txt"), getFile("rejected.txt"), getFile("tweeted.txt"), ]); - console.log("Got all files"); const approvedSet = new Set(getLines(approved)); const rejectedSet = new Set(getLines(rejected)); @@ -89,38 +87,38 @@ async function getSkinToReview() { const [md5, ...filename] = line.split(" "); return { md5, filename: filename.join(" ") }; }); - const toReview = skins.filter(({ md5 }) => { + return skins.find(({ md5 }) => { return !( approvedSet.has(md5) || rejectedSet.has(md5) || tweetedSet.has(md5) ); }); - console.log(toReview.length, "skins to review"); - return toReview[0]; } async function getTweetableSkins() { - console.log("Reading from s3..."); const [filenames, approved, rejected, tweeted] = await Promise.all([ getFile("filenames.txt"), getFile("approved.txt"), getFile("rejected.txt"), getFile("tweeted.txt"), ]); - console.log("Got all files"); const rejectedSet = new Set(getLines(rejected)); const tweetedSet = new Set(getLines(tweeted)); const approvedSet = new Set(getLines(approved)); const filenameLines = getLines(filenames); - return filenameLines.map(line => { - const [md5, ...filename] = line.split(" "); - return { md5, filename: filename.join(" ") }; - }).filter(({md5}) => { - return approvedSet.has(md5) && !rejectedSet.has(md5) && !tweetedSet.has(md5); - }); + return filenameLines + .map(line => { + const [md5, ...filename] = line.split(" "); + return { md5, filename: filename.join(" ") }; + }) + .filter(({ md5 }) => { + return ( + approvedSet.has(md5) && !rejectedSet.has(md5) && !tweetedSet.has(md5) + ); + }); } async function getSkinToTweet() { const tweetableSkins = await getTweetableSkins(); @@ -141,4 +139,16 @@ async function reject(md5) { return appendLine("rejected.txt", md5); } -module.exports = { getSkinToReview, approve, reject, getStatus, getStats, getSkinToTweet }; +async function markAsTweeted(md5) { + return appendLine("tweeted.txt", md5); +} + +module.exports = { + getSkinToReview, + approve, + reject, + getStatus, + getStats, + getSkinToTweet, + markAsTweeted, +}; diff --git a/experiments/tweetBot/tweet.py b/experiments/tweetBot/tweet.py index 2d2a9b79..0c01ba84 100755 --- a/experiments/tweetBot/tweet.py +++ b/experiments/tweetBot/tweet.py @@ -151,7 +151,7 @@ Download: %s""" % ( if not dry: url = tweet(status_message, screenshot_path) Webhook(CONFIG["discord_url"], msg=url).post() - append_line("tweeted.txt", md5) + # append_line("tweeted.txt", md5) else: print("Would have tweeted: %s" % status_message) print("With media file: %s" % screenshot_path)