From 1009c239e7ceddf0e009e5c23e54aee2c10e7664 Mon Sep 17 00:00:00 2001 From: Matt Isenhower Date: Thu, 7 Nov 2024 20:25:08 -0800 Subject: [PATCH] Save public Twitter images even without Twitter credentials --- src/app/twitter/tweets/GearTweet.js | 2 +- src/app/twitter/tweets/ScheduleTweet.js | 2 +- src/app/twitter/tweets/TwitterPostBase.js | 25 +++++++++++++++-------- src/app/twitter/twitter.js | 5 ----- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/app/twitter/tweets/GearTweet.js b/src/app/twitter/tweets/GearTweet.js index 595bc88..59ca040 100644 --- a/src/app/twitter/tweets/GearTweet.js +++ b/src/app/twitter/tweets/GearTweet.js @@ -31,7 +31,7 @@ class GearTweet extends TwitterPostBase { return captureGearScreenshot(now); } - getPublicImageFilename(data) { + getPublicImageFilename() { return 'gear.png'; } diff --git a/src/app/twitter/tweets/ScheduleTweet.js b/src/app/twitter/tweets/ScheduleTweet.js index 3d2a780..6f00e36 100644 --- a/src/app/twitter/tweets/ScheduleTweet.js +++ b/src/app/twitter/tweets/ScheduleTweet.js @@ -41,7 +41,7 @@ class ScheduleTweet extends TwitterPostBase { return captureScheduleScreenshot(data.regular.start_time, this.globalSplatfestOpenInAllRegions()); } - getPublicImageFilename(data) { + getPublicImageFilename() { return 'schedule.png'; } diff --git a/src/app/twitter/tweets/TwitterPostBase.js b/src/app/twitter/tweets/TwitterPostBase.js index 8fbfa26..290aebe 100644 --- a/src/app/twitter/tweets/TwitterPostBase.js +++ b/src/app/twitter/tweets/TwitterPostBase.js @@ -1,7 +1,7 @@ const path = require('path'); const fs = require('fs'); const mkdirp = require('mkdirp').sync; -const { postMediaTweet } = require('../client'); +const { canTweet, postMediaTweet } = require('../client'); const { getTopOfCurrentHour, readJson, writeJson } = require('@/common/utilities'); const lastTweetTimesPath = path.resolve('storage/twitter-lastTweetTimes.json'); @@ -19,6 +19,12 @@ class TwitterPostBase { return false; } + // Make sure we can post or save to a file + if (!canTweet() && !this.getPublicImageFilename()) { + this.error('Twitter API parameters not specified'); + return false; + } + return this.postTweet(); } @@ -32,13 +38,15 @@ class TwitterPostBase { // Maybe save the image this.maybeSavePublicImage(data, image); - // Post to Twitter - let tweet = await postMediaTweet(text, image); + if (canTweet()) { + // Post to Twitter + let tweet = await postMediaTweet(text, image); - // Update the last post time - this.updateLastTweetTime(); + // Update the last post time + this.updateLastTweetTime(); - this.info('Posted Tweet'); + this.info('Posted Tweet'); + } } catch (e) { this.error('Couldn\'t post Tweet'); @@ -47,11 +55,12 @@ class TwitterPostBase { } maybeSavePublicImage(data, image) { - let filename = this.getPublicImageFilename(data); + let filename = this.getPublicImageFilename(); if (filename) { let outputFilename = path.resolve(`dist/twitter-images/${filename}`); mkdirp(path.dirname(outputFilename)); fs.writeFileSync(outputFilename, image); + this.info(`Saved public image as ${filename}`); } } @@ -155,7 +164,7 @@ class TwitterPostBase { getImage(data) { } // The filename to store the image as (optional) - getPublicImageFilename(data) { } + getPublicImageFilename() { } // The text body of the Tweet getText(data) { } diff --git a/src/app/twitter/twitter.js b/src/app/twitter/twitter.js index 6e7d7d2..36219ac 100644 --- a/src/app/twitter/twitter.js +++ b/src/app/twitter/twitter.js @@ -2,11 +2,6 @@ const { canTweet } = require('./client'); const tweets = require('./tweets'); async function maybePostTweets() { - if (!canTweet()) { - console.warn('Twitter API parameters not specified'); - return; - } - for (let tweet of tweets) await tweet.maybePostTweet(); }