mirror of
https://github.com/misenhower/splatoon3.ink.git
synced 2026-09-14 03:25:43 -05:00
Add map schedules tweet
This commit is contained in:
@@ -25,9 +25,7 @@ export default class TwitterManager
|
||||
continue;
|
||||
}
|
||||
|
||||
let tweet = await generator.getTweet(this.screenshotHelper);
|
||||
|
||||
await this.client.send(tweet);
|
||||
await generator.sendTweet(this.screenshotHelper, this.client);
|
||||
}
|
||||
|
||||
await this.screenshotHelper.close();
|
||||
|
||||
59
app/twitter/generators/SchedulesTweet.mjs
Normal file
59
app/twitter/generators/SchedulesTweet.mjs
Normal file
@@ -0,0 +1,59 @@
|
||||
import TweetGenerator from "./TweetGenerator.mjs";
|
||||
import Media from "../Media.mjs";
|
||||
import { useAnarchyOpenSchedulesStore, useAnarchySeriesSchedulesStore, useRegularSchedulesStore } from "../../../src/stores/schedules.mjs";
|
||||
import ValueCache from "../../common/ValueCache.mjs";
|
||||
|
||||
export default class SchedulesTweet extends TweetGenerator
|
||||
{
|
||||
name = 'Schedules';
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
this.tweetCache = new ValueCache('twitter.schedules');
|
||||
}
|
||||
|
||||
async getStages() {
|
||||
await this.preparePinia();
|
||||
|
||||
return {
|
||||
regular: useRegularSchedulesStore().activeSchedule,
|
||||
anarchySeries: useAnarchySeriesSchedulesStore().activeSchedule,
|
||||
anarchyOpen: useAnarchyOpenSchedulesStore().activeSchedule,
|
||||
}
|
||||
}
|
||||
|
||||
async getScheduleTime() {
|
||||
let schedule = (await this.getStages()).regular;
|
||||
|
||||
return Date.parse(schedule.startTime);
|
||||
}
|
||||
|
||||
async shouldTweet() {
|
||||
let currentTime = await this.getScheduleTime();
|
||||
let cachedTime = await this.tweetCache.getData();
|
||||
|
||||
return !cachedTime || (currentTime > cachedTime);
|
||||
}
|
||||
|
||||
async sendTweet(screenshotHelper, twitterClient) {
|
||||
await super.sendTweet(screenshotHelper, twitterClient);
|
||||
|
||||
let currentTime = await this.getScheduleTime();
|
||||
await this.tweetCache.setData(currentTime);
|
||||
}
|
||||
|
||||
async _getStatus() {
|
||||
let stages = await this.getStages();
|
||||
|
||||
return `Splatoon 3 map rotation: Anarchy (Series) game mode: ${stages.anarchySeries.settings.vsRule.name}, Anarchy (Open) game mode: ${stages.anarchyOpen.settings.vsRule.name} #maprotation`;
|
||||
}
|
||||
|
||||
/** @param {ScreenshotHelper} screenshotHelper */
|
||||
async _getMedia(screenshotHelper) {
|
||||
let media = new Media;
|
||||
media.file = await screenshotHelper.capture('schedules');
|
||||
|
||||
return media;
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,8 @@ import { createPinia, setActivePinia } from 'pinia';
|
||||
import { useGearStore, useSchedulesStore } from '../../../src/stores/data.mjs';
|
||||
import prefixedConsole from '../../common/prefixedConsole.mjs';
|
||||
import Tweet from '../Tweet.mjs';
|
||||
import TwitterClient from '../TwitterClient.mjs';
|
||||
import ScreenshotHelper from '../../screenshots/ScreenshotHelper.mjs';
|
||||
|
||||
export default class TweetGenerator
|
||||
{
|
||||
@@ -16,16 +18,32 @@ export default class TweetGenerator
|
||||
}
|
||||
|
||||
async preparePinia() {
|
||||
if (this._piniaInitialized) {
|
||||
return;
|
||||
}
|
||||
|
||||
setActivePinia(createPinia());
|
||||
|
||||
useSchedulesStore().setData(JSON.parse(await fs.readFile('dist/data/schedules.json')));
|
||||
useGearStore().setData(JSON.parse(await fs.readFile('dist/data/gear.json')));
|
||||
|
||||
this._piniaInitialized = true;
|
||||
}
|
||||
|
||||
async shouldTweet() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {ScreenshotHelper} screenshotHelper
|
||||
* @param {TwitterClient} twitterClient
|
||||
*/
|
||||
async sendTweet(screenshotHelper, twitterClient) {
|
||||
let tweet = await this.getTweet(screenshotHelper);
|
||||
|
||||
await twitterClient.send(tweet);
|
||||
}
|
||||
|
||||
/** @param {ScreenshotHelper} screenshotHelper */
|
||||
async getTweet(screenshotHelper) {
|
||||
const tweet = new Tweet;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import CountdownTweet from "./generators/CountdownTweet.mjs";
|
||||
import SchedulesTweet from "./generators/SchedulesTweet.mjs";
|
||||
import TwitterManager from "./TwitterManager.mjs"
|
||||
|
||||
export function defaultTwitterManager() {
|
||||
return new TwitterManager([
|
||||
new CountdownTweet,
|
||||
new SchedulesTweet,
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user