mirror of
https://github.com/captbaritone/webamp.git
synced 2026-07-22 09:37:17 +00:00
Handle missing skins better and move s3 update from Python to JS
This commit is contained in:
parent
b98667d1c5
commit
b76eadf10e
3 changed files with 35 additions and 18 deletions
|
|
@ -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":
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue