From d90a7b14ad7e7fd3a2b4122a7650845c8028b0ac Mon Sep 17 00:00:00 2001 From: Dragon Fire Date: Fri, 17 Jul 2020 09:00:17 -0400 Subject: [PATCH] Support GIF in what-anime --- commands/analyze/what-anime.js | 12 +++++++++++- package.json | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/commands/analyze/what-anime.js b/commands/analyze/what-anime.js index 84d94184..a4ab2b5d 100644 --- a/commands/analyze/what-anime.js +++ b/commands/analyze/what-anime.js @@ -1,5 +1,6 @@ const Command = require('../../structures/Command'); const request = require('node-superfetch'); +const { createCanvas, loadImage } = require('canvas'); const { stripIndents } = require('common-tags'); const { base64 } = require('../../util/Util'); const { WHATANIME_KEY } = process.env; @@ -37,7 +38,8 @@ module.exports = class WhatAnimeCommand extends Command { if (!status.status) { return msg.reply(`Oh no, I'm out of requests! Please wait ${status.refresh} seconds and try again.`); } - const { body } = await request.get(screenshot); + let { body } = await request.get(screenshot); + if (screenshot.endsWith('.gif')) body = await this.convertGIF(body); const result = await this.search(body, msg.channel.nsfw); if (result === 'size') return msg.reply('Please do not send an image larger than 10MB.'); if (result.nsfw && !msg.channel.nsfw) { @@ -93,4 +95,12 @@ module.exports = class WhatAnimeCommand extends Command { return null; } } + + async convertGIF(image) { + const data = await loadImage(image); + const canvas = createCanvas(data.width, data.height); + const ctx = canvas.getContext('2d'); + ctx.drawImage(data, 0, 0); + return canvas.toBuffer(); + } }; diff --git a/package.json b/package.json index e7f879c8..b683703c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xiao", - "version": "119.18.0", + "version": "119.18.1", "description": "Your personal server companion.", "main": "Xiao.js", "scripts": {