Cleanup legacy rendering code and files
also removes dockerfile and imagemagick.
This commit is contained in:
@@ -1,3 +0,0 @@
|
|||||||
# syntax=docker/dockerfile:1
|
|
||||||
FROM node:16.9.0-alpine
|
|
||||||
RUN apk add --no-cache imagemagick
|
|
||||||
@@ -1,11 +1,9 @@
|
|||||||
require("dotenv").config();
|
require("dotenv").config();
|
||||||
const { SlashCommandBuilder, MessageAttachment, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js");
|
const { SlashCommandBuilder } = require("discord.js");
|
||||||
const { Card, User, Character } = require("../models");
|
const { Card } = require("../models");
|
||||||
const { UserUtils, Compositing, Rendering } = require("../util");
|
const { UserUtils, Rendering } = require("../util");
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
const sharp = require("sharp");
|
|
||||||
const { CURRENCY_NAMES } = require("../config/constants");
|
const { CURRENCY_NAMES } = require("../config/constants");
|
||||||
const fs = require('fs');
|
|
||||||
|
|
||||||
const pageSize = 8;
|
const pageSize = 8;
|
||||||
|
|
||||||
@@ -29,16 +27,7 @@ module.exports = {
|
|||||||
|
|
||||||
let profile = await user.getProfile();
|
let profile = await user.getProfile();
|
||||||
|
|
||||||
let customStatus = this.encodeStr(profile.customStatus);
|
let customStatus = profile.customStatus;
|
||||||
|
|
||||||
let profileTemplate = fs.readFileSync('/app/assets/profile/profile.svg').toString();
|
|
||||||
profileTemplate = profileTemplate.replace(/{{USERNAME}}/g, this.encodeStr(discordUser.username.substr(0,15)+(discordUser.username.length>15?'...':'')));
|
|
||||||
profileTemplate = profileTemplate.replace(/{{PROFILE_TEXT}}/g, customStatus );
|
|
||||||
profileTemplate = profileTemplate.replace(/{{HEADER_COLOR}}/g, '190,31,97');
|
|
||||||
profileTemplate = profileTemplate.replace(/{{CC}}/g, await Card.count({where: {userId: user.id}}));
|
|
||||||
profileTemplate = profileTemplate.replace(/{{LVL}}/g, await user.level().currentLevel);
|
|
||||||
profileTemplate = profileTemplate.replace(/{{CUR_1}}/g, `${await user.primaryCurrency} ${CURRENCY_NAMES[1]}`);
|
|
||||||
profileTemplate = profileTemplate.replace(/{{CUR_2}}/g, `${await user.secondaryCurrency} ${CURRENCY_NAMES[2]}`);
|
|
||||||
|
|
||||||
let userImage = discordUser.displayAvatarURL({format: 'png', size: 128}).split('webp')[0] + 'png';
|
let userImage = discordUser.displayAvatarURL({format: 'png', size: 128}).split('webp')[0] + 'png';
|
||||||
|
|
||||||
@@ -104,7 +93,7 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"text": this.encodeStr(discordUser.username.substr(0,15)+(discordUser.username.length>15?'...':'')),
|
"text": discordUser.username.substr(0,15)+(discordUser.username.length>15?'...':''),
|
||||||
"fontSize": 32,
|
"fontSize": 32,
|
||||||
"x": 25,
|
"x": 25,
|
||||||
"y": 20,
|
"y": 20,
|
||||||
@@ -169,16 +158,5 @@ module.exports = {
|
|||||||
let { data } = await axios.post(`${process.env.JOSE_ENDPOINT}/jobs`, job);
|
let { data } = await axios.post(`${process.env.JOSE_ENDPOINT}/jobs`, job);
|
||||||
console.log("Fetched ", data);
|
console.log("Fetched ", data);
|
||||||
await interaction.editReply({ files: [data["path"]] });
|
await interaction.editReply({ files: [data["path"]] });
|
||||||
},
|
|
||||||
encodeStr: function(str) {
|
|
||||||
let charMapping = {
|
|
||||||
'&': '&',
|
|
||||||
'"': '"',
|
|
||||||
'<': '<',
|
|
||||||
'>': '>'
|
|
||||||
};
|
|
||||||
return str.replace(/([\&"<>])/g, function(str, item) {
|
|
||||||
return charMapping[item];
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,7 @@ version: "3.7"
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
bot:
|
bot:
|
||||||
build: .
|
image: node:16.9.0-alpine
|
||||||
command: sh -c "npm config set cache /app/.npm_cache --global && npm install && npx sequelize db:migrate && node ."
|
command: sh -c "npm config set cache /app/.npm_cache --global && npm install && npx sequelize db:migrate && node ."
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -1,42 +0,0 @@
|
|||||||
const { spawn } = require('child_process');
|
|
||||||
const crypto = require('crypto');
|
|
||||||
const fs = require('fs');
|
|
||||||
const { Card } = require('../models');
|
|
||||||
|
|
||||||
//TODO: Handle missing images
|
|
||||||
module.exports = {
|
|
||||||
name: "Compositing",
|
|
||||||
renderProfile: async function(profile, background, renderedCards) {
|
|
||||||
let hash = crypto.createHash('md5').update(JSON.stringify(profile) + background).digest('hex');
|
|
||||||
|
|
||||||
let outFile = `/app/assets/image_cache/profiles/${hash}.gif`;
|
|
||||||
console.log('Rendering profile to ' + outFile);
|
|
||||||
|
|
||||||
//composite {overlay} {background} [{mask}] [-compose {method}] {result}
|
|
||||||
let args = ['png:-', 'null:',
|
|
||||||
'\(', `${renderedCards[0]}`, '-coalesce', '\)',
|
|
||||||
'-geometry', '+25+85', '-compose', 'over', '-layers', 'composite',
|
|
||||||
'null:', '\(', `${renderedCards[1]}`, '-coalesce', '-resize', '170x283', '\)',
|
|
||||||
'-geometry', '+350+300', '-compose', 'over', '-layers', 'composite',
|
|
||||||
'null:', '\(', `${renderedCards[2]}`, '-coalesce', '-resize', '170x283', '\)',
|
|
||||||
'-geometry', '+535+300', '-compose', 'over', '-layers', 'composite',
|
|
||||||
'null:', '\(', `${renderedCards[3]}`, '-coalesce', '-resize', '170x283', '\)',
|
|
||||||
'-geometry', '+720+300', '-compose', 'over', '-layers', 'composite',
|
|
||||||
'-layers', 'optimize', outFile];
|
|
||||||
|
|
||||||
console.log('GM Args: ' + args);
|
|
||||||
|
|
||||||
const composite = spawn('convert', args);
|
|
||||||
composite.stdin.write(background);
|
|
||||||
composite.stdin.end();
|
|
||||||
|
|
||||||
composite.stderr.on('data', (data) => {
|
|
||||||
console.log(`stdout: ${data}`);
|
|
||||||
});
|
|
||||||
const exitCode = await new Promise( (resolve, reject) => {
|
|
||||||
composite.on('close', resolve);
|
|
||||||
})
|
|
||||||
|
|
||||||
return outFile;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,4 @@
|
|||||||
require("dotenv").config();
|
require("dotenv").config();
|
||||||
const sharp = require('sharp');
|
|
||||||
const crypto = require('crypto');
|
|
||||||
const fs = require('fs');
|
|
||||||
const { Character } = require('../models');
|
const { Character } = require('../models');
|
||||||
const axios = require('axios').default
|
const axios = require('axios').default
|
||||||
|
|
||||||
@@ -14,7 +11,6 @@ const QualityColors = {
|
|||||||
6: {r: 255, g: 255, b: 0} //shiny
|
6: {r: 255, g: 255, b: 0} //shiny
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: Handle missing images
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "Rendering",
|
name: "Rendering",
|
||||||
renderCardStack: async function(cards) {
|
renderCardStack: async function(cards) {
|
||||||
@@ -71,17 +67,7 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/* if (!card.userId) {
|
console.log(`Rendering card ${card.id} ${character.name} ${character.imageIdentifier}`);
|
||||||
return './assets/cards/card_cover.png';
|
|
||||||
} */
|
|
||||||
/**
|
|
||||||
let hash = crypto.createHash('md5').update(character.imageIdentifier + card.quality + (card.userId == 1 ? 'unclaimed' : 'claimed')).digest('hex');
|
|
||||||
//TODO: Add switch to turn off or bypass caching
|
|
||||||
if (fs.existsSync(`./assets/image_cache/${hash}.gif`)) {
|
|
||||||
return `./assets/image_cache/${hash}.gif`;
|
|
||||||
}
|
|
||||||
**/
|
|
||||||
console.log(`Rendering card or character ${character.name} ${character.imageIdentifier}`);
|
|
||||||
|
|
||||||
let characterImage = `${process.env.ASSET_URL}/cards/${character.imageIdentifier}`;
|
let characterImage = `${process.env.ASSET_URL}/cards/${character.imageIdentifier}`;
|
||||||
|
|
||||||
@@ -91,7 +77,6 @@ module.exports = {
|
|||||||
character.name = ' ';
|
character.name = ' ';
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("Character iomage ", characterImage);
|
|
||||||
let job = {
|
let job = {
|
||||||
"type": "card",
|
"type": "card",
|
||||||
"size": {
|
"size": {
|
||||||
@@ -132,6 +117,5 @@ module.exports = {
|
|||||||
let { data } = await axios.post(`${process.env.JOSE_ENDPOINT}/jobs`, job);
|
let { data } = await axios.post(`${process.env.JOSE_ENDPOINT}/jobs`, job);
|
||||||
console.log("Fetched ", data["path"]);
|
console.log("Fetched ", data["path"]);
|
||||||
return data["path"];
|
return data["path"];
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user