diff --git a/.gitignore b/.gitignore index bff1834..b9c516a 100644 --- a/.gitignore +++ b/.gitignore @@ -150,3 +150,4 @@ slack-users* assignments.json memdb.json src/commands/uttered-oyster-ledge-lumber-velvet-using-coffee-injury-inline-ahead-dwelt-elope.ts +t6.ts \ No newline at end of file diff --git a/package.json b/package.json index 2a8a9cb..1949e1c 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "dependencies": { "@js-temporal/polyfill": "^0.4.4", "@keyv/sqlite": "^4.0.1", + "@napi-rs/canvas": "^0.1.69", "@sentry/node": "^8.41.0", "@sentry/profiling-node": "^8.41.0", "@slack/bolt": "^3.21.2", @@ -30,13 +31,13 @@ "node-memwatch-new": "0.0.1", "octokit": "^4.0.2", "openai": "latest", + "pidusage": "latest", "rss": "^1.2.2", "simple-json-db": "^2.0.0", "smee-client": "^2.0.3", "socket.io": "^4.8.1", "stegcloak": "^1.1.1", - "ws": "^8.18.0", - "pidusage": "latest" + "ws": "^8.18.0" }, "optionalDependencies": {}, "devDependencies": { diff --git a/src/modules/alaskasavatar.ts b/src/modules/alaskasavatar.ts new file mode 100644 index 0000000..15d4b31 --- /dev/null +++ b/src/modules/alaskasavatar.ts @@ -0,0 +1,57 @@ +import { createCanvas, loadImage } from "@napi-rs/canvas" +import { cron } from "./juice" +import { Cron } from "croner" +// import { writeFileSync } from "fs"; +// const { createCanvas, loadImage } = require('@napi-rs/canvas') +export function sendImage(imageData) { + fetch('https://alaska-avatar.vercel.app/api/upload', { + method: 'POST', + headers: { + 'accept': 'application/json, text/plain, */*', + 'accept-language': 'en-US,en;q=0.9', + 'content-type': 'image/png', + 'origin': 'https://alaska-avatar.vercel.app', + 'priority': 'u=1, i', + 'referer': 'https://alaska-avatar.vercel.app/', + 'sec-ch-ua': '"Chromium";v="133", "Not(A:Brand";v="99"', + 'sec-ch-ua-mobile': '?0', + 'sec-ch-ua-platform': '"Linux"', + 'sec-fetch-dest': 'empty', + 'sec-fetch-mode': 'cors', + 'sec-fetch-site': 'same-origin', + 'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', + 'cookie': 'token='+process.env.ALASKAS_AVATAR_KEY + }, + body: imageData + }).then(d=>d.json()).then(console.log) +} + + +const canvas = createCanvas(300, 320) +const ctx = canvas.getContext('2d') +export async function idkRunAvatarThingy() { +const zeon = await loadImage("https://saahild.com/zeon/static/media/logo.496b486aab466e923154.png") +const avatar = await loadImage("https://alaska-avatar.vercel.app/api/avatar") +const scale = 0.5; + const imgWidth = zeon.width * scale; + const imgHeight = zeon.height * scale; + const margin = 9; + + // Draw background image to fill the entire canvas + ctx.drawImage(avatar, 0, 0, 300, 320); +// Draw image in top-right +const x = 300 - imgWidth - margin; +const y = margin; +ctx.drawImage(zeon, x, y, imgWidth, imgHeight); +// Save to file +const buffer = canvas.toBuffer('image/png'); +// const blob = canvas.t +// writeFileSync('output.png', buffer); +console.log(`Sending...`) +sendImage(buffer) +} +export function cronJobForAvatar() { + new Cron("0 */3 * * *", async () => { + await idkRunAvatarThingy() + }) +} \ No newline at end of file diff --git a/src/modules/cron.ts b/src/modules/cron.ts index 46af789..24a7f5d 100644 --- a/src/modules/cron.ts +++ b/src/modules/cron.ts @@ -19,6 +19,7 @@ import { setupSeverCron } from "./seven39feed"; import { cronJobForRPG } from "./rpgysws"; import { onLoadForLockIn } from "./lockinysws"; import { setupFlightlyCron } from "./flightly"; +import { cronJobForAvatar } from "./alaskasavatar"; // import { onLoad } from "./lockinysws"; const cronWithCheckIn = Sentry.cron.instrumentNodeCron(cron); @@ -279,7 +280,7 @@ export function setupOverallCron(app: ModifiedApp) { cronJobForRPG(app); onLoadForLockIn(app); setupFlightlyCron(app); - + cronJobForAvatar() return { // checkAirtableBoba, cronWithCheckIn, diff --git a/yarn.lock b/yarn.lock index 2f9a384..98fd735 100644 --- a/yarn.lock +++ b/yarn.lock @@ -69,6 +69,72 @@ semver "^7.3.5" tar "^6.1.11" +"@napi-rs/canvas-android-arm64@0.1.69": + version "0.1.69" + resolved "https://registry.yarnpkg.com/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.69.tgz#0ce738f90b3532d43505eebb650cb4763c24ea66" + integrity sha512-4icWTByY8zPvM9SelfQKf3I6kwXw0aI5drBOVrwfER5kjwXJd78FPSDSZkxDHjvIo9Q86ljl18Yr963ehA4sHQ== + +"@napi-rs/canvas-darwin-arm64@0.1.69": + version "0.1.69" + resolved "https://registry.yarnpkg.com/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.69.tgz#826a2b45af433a4aea8c0e0edfe1ca1fcfd5b9e9" + integrity sha512-HOanhhYlHdukA+unjelT4Dg3ta7e820x87/AG2dKUMsUzH19jaeZs9bcYjzEy2vYi/dFWKz7cSv2yaIOudB8Yg== + +"@napi-rs/canvas-darwin-x64@0.1.69": + version "0.1.69" + resolved "https://registry.yarnpkg.com/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.69.tgz#a78b3e8c44d6a93e36a8ef1676e96712c5ad11be" + integrity sha512-SIp7WfhxAPnSVK9bkFfJp+84rbATCIq9jMUzDwpCLhQ+v+OqtXe4pggX1oeV+62/HK6BT1t18qRmJfyqwJ9f3g== + +"@napi-rs/canvas-linux-arm-gnueabihf@0.1.69": + version "0.1.69" + resolved "https://registry.yarnpkg.com/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.69.tgz#47369309e87e047335379bea628625b740c7ab2b" + integrity sha512-Ls+KujCp6TGpkuMVFvrlx+CxtL+casdkrprFjqIuOAnB30Mct6bCEr+I83Tu29s3nNq4EzIGjdmA3fFAZG/Dtw== + +"@napi-rs/canvas-linux-arm64-gnu@0.1.69": + version "0.1.69" + resolved "https://registry.yarnpkg.com/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.69.tgz#1f23dd74a0f53db95309a58f989cf6be1bb6363e" + integrity sha512-m8VcGmeSBNRbHZBd1srvdM1aq/ScS2y8KqGqmCCEgJlytYK4jdULzAo2K/BPKE1v3xvn8oUPZDLI/NBJbJkEoA== + +"@napi-rs/canvas-linux-arm64-musl@0.1.69": + version "0.1.69" + resolved "https://registry.yarnpkg.com/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.69.tgz#ed719b19acf60888ef62a40951b9c51891bd9fcf" + integrity sha512-a3xjNRIeK2m2ZORGv2moBvv3vbkaFZG1QKMeiEv/BKij+rkztuEhTJGMar+buICFgS0fLgphXXsKNkUSJb7eRQ== + +"@napi-rs/canvas-linux-riscv64-gnu@0.1.69": + version "0.1.69" + resolved "https://registry.yarnpkg.com/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.69.tgz#444993e0b6fc52cb7cbc838e25df2d62b5fb17b0" + integrity sha512-pClUoJF5wdC9AvD0mc15G9JffL1Q85nuH1rLSQPRkGmGmQOtRjw5E9xNbanz7oFUiPbjH7xcAXUjVAcf7tdgPQ== + +"@napi-rs/canvas-linux-x64-gnu@0.1.69": + version "0.1.69" + resolved "https://registry.yarnpkg.com/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.69.tgz#87afd2f8ba1b442b45429c03d5aa98eb9872772f" + integrity sha512-96X3bFAmzemfw84Ts6Jg/omL86uuynvK06MWGR/mp3JYNumY9RXofA14eF/kJIYelbYFWXcwpbcBR71lJ6G/YQ== + +"@napi-rs/canvas-linux-x64-musl@0.1.69": + version "0.1.69" + resolved "https://registry.yarnpkg.com/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.69.tgz#4f743a8d649f61dc121f03b6f40dff2e5d318aac" + integrity sha512-2QTsEFO72Kwkj53W9hc5y1FAUvdGx0V+pjJB+9oQF6Ys9+y989GyPIl5wZDzeh8nIJW6koZZ1eFa8pD+pA5BFQ== + +"@napi-rs/canvas-win32-x64-msvc@0.1.69": + version "0.1.69" + resolved "https://registry.yarnpkg.com/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.69.tgz#7b63c1694c5ef11db9695f5917e3f6670562bc60" + integrity sha512-Q4YA8kVnKarApBVLu7F8icGlIfSll5Glswo5hY6gPS4Is2dCI8+ig9OeDM8RlwYevUIxKq8lZBypN8Q1iLAQ7w== + +"@napi-rs/canvas@^0.1.69": + version "0.1.69" + resolved "https://registry.yarnpkg.com/@napi-rs/canvas/-/canvas-0.1.69.tgz#ac2e4113d0bd381568219d1ba22f0a8563d4c6b1" + integrity sha512-ydvNeJMRm+l3T14yCoUKqjYQiEdXDq1isznI93LEBGYssXKfSaLNLHOkeM4z9Fnw9Pkt2EKOCAtW9cS4b00Zcg== + optionalDependencies: + "@napi-rs/canvas-android-arm64" "0.1.69" + "@napi-rs/canvas-darwin-arm64" "0.1.69" + "@napi-rs/canvas-darwin-x64" "0.1.69" + "@napi-rs/canvas-linux-arm-gnueabihf" "0.1.69" + "@napi-rs/canvas-linux-arm64-gnu" "0.1.69" + "@napi-rs/canvas-linux-arm64-musl" "0.1.69" + "@napi-rs/canvas-linux-riscv64-gnu" "0.1.69" + "@napi-rs/canvas-linux-x64-gnu" "0.1.69" + "@napi-rs/canvas-linux-x64-musl" "0.1.69" + "@napi-rs/canvas-win32-x64-msvc" "0.1.69" + "@npmcli/fs@^1.0.0": version "1.1.1" resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" @@ -3779,6 +3845,13 @@ pg-types@^4.0.1: postgres-interval "^3.0.0" postgres-range "^1.1.1" +pidusage@latest: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pidusage/-/pidusage-4.0.0.tgz#be3895830c793eb18931b412bcf58ce4d40cbd7b" + integrity sha512-89hVJc5gq157puLYZaO3CH0qfGyDfbDG1KFCE4lCSwK0l1EuEbNa4pIJJXL93ltU5SsYia/DHJUgMY2qE4XRQg== + dependencies: + safe-buffer "^5.2.1" + point-in-polygon-hao@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/point-in-polygon-hao/-/point-in-polygon-hao-1.2.3.tgz#e702b597e9015e0054441f01ca43aab2a2b78261"