fedimbed: upload videos if we can
This commit is contained in:
parent
d3e1cbd60a
commit
bd82f1167c
2 changed files with 49 additions and 1 deletions
|
@ -371,6 +371,19 @@ function parseHtmlEntities(str) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const UPLOAD_LIMIT = 8388608;
|
||||||
|
const UPLOAD_LIMIT_TIER_2 = 52428800;
|
||||||
|
const UPLOAD_LIMIT_TIER_3 = 104857600;
|
||||||
|
|
||||||
|
function getUploadLimit(guild) {
|
||||||
|
if (!guild) return UPLOAD_LIMIT;
|
||||||
|
|
||||||
|
if (guild.premiumTier == 2) return UPLOAD_LIMIT_TIER_2;
|
||||||
|
if (guild.premiumTier == 3) return UPLOAD_LIMIT_TIER_3;
|
||||||
|
|
||||||
|
return UPLOAD_LIMIT;
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
pastelize,
|
pastelize,
|
||||||
getTopColor,
|
getTopColor,
|
||||||
|
@ -384,4 +397,5 @@ module.exports = {
|
||||||
selectionMessage,
|
selectionMessage,
|
||||||
lookupUser,
|
lookupUser,
|
||||||
parseHtmlEntities,
|
parseHtmlEntities,
|
||||||
|
getUploadLimit,
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,7 +3,7 @@ const {MessageFlags, Routes} = require("oceanic.js");
|
||||||
const events = require("../lib/events.js");
|
const events = require("../lib/events.js");
|
||||||
const logger = require("../lib/logger.js");
|
const logger = require("../lib/logger.js");
|
||||||
const {hasFlag} = require("../lib/guildSettings.js");
|
const {hasFlag} = require("../lib/guildSettings.js");
|
||||||
const {parseHtmlEntities} = require("../lib/utils.js");
|
const {parseHtmlEntities, getUploadLimit} = require("../lib/utils.js");
|
||||||
|
|
||||||
const FRIENDLY_USERAGENT =
|
const FRIENDLY_USERAGENT =
|
||||||
"HiddenPhox/fedimbed (https://gitlab.com/Cynosphere/HiddenPhox)";
|
"HiddenPhox/fedimbed (https://gitlab.com/Cynosphere/HiddenPhox)";
|
||||||
|
@ -198,16 +198,19 @@ async function processUrl(msg, url) {
|
||||||
videos.push({
|
videos.push({
|
||||||
url: attachment.url,
|
url: attachment.url,
|
||||||
desc: attachment.name,
|
desc: attachment.name,
|
||||||
|
type: attachment.mediaType,
|
||||||
});
|
});
|
||||||
} else if (attachment.mediaType.startsWith("image/")) {
|
} else if (attachment.mediaType.startsWith("image/")) {
|
||||||
images.push({
|
images.push({
|
||||||
url: attachment.url,
|
url: attachment.url,
|
||||||
desc: attachment.name,
|
desc: attachment.name,
|
||||||
|
type: attachment.mediaType,
|
||||||
});
|
});
|
||||||
} else if (attachment.mediaType.startsWith("audio/")) {
|
} else if (attachment.mediaType.startsWith("audio/")) {
|
||||||
audios.push({
|
audios.push({
|
||||||
url: attachment.url,
|
url: attachment.url,
|
||||||
desc: attachment.name,
|
desc: attachment.name,
|
||||||
|
type: attachment.mediaType,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -352,6 +355,36 @@ async function processUrl(msg, url) {
|
||||||
embeds.push(baseEmbed);
|
embeds.push(baseEmbed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const files = [];
|
||||||
|
|
||||||
|
if (videos.length > 0) {
|
||||||
|
for (const attachment of videos) {
|
||||||
|
const size = await fetch(attachment.url, {
|
||||||
|
method: "HEAD",
|
||||||
|
headers: {
|
||||||
|
"User-Agent": FRIENDLY_USERAGENT,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.then((res) => res.blob())
|
||||||
|
.then((blob) => blob.size);
|
||||||
|
|
||||||
|
if (size <= getUploadLimit(msg.channel.guild)) {
|
||||||
|
const file = await fetch(attachment.url, {
|
||||||
|
headers: {
|
||||||
|
"User-Agent": FRIENDLY_USERAGENT,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.then((res) => res.arrayBuffer())
|
||||||
|
.then((buf) => Buffer.from(buf));
|
||||||
|
|
||||||
|
files.push({
|
||||||
|
name: "video." + attachment.type.split("/")[1],
|
||||||
|
contents: file,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// NB: OceanicJS/Oceanic#32
|
// NB: OceanicJS/Oceanic#32
|
||||||
//await msg.edit({flags: MessageFlags.SUPPRESS_EMBEDS}).catch(() => {});
|
//await msg.edit({flags: MessageFlags.SUPPRESS_EMBEDS}).catch(() => {});
|
||||||
await hf.bot.rest
|
await hf.bot.rest
|
||||||
|
@ -367,6 +400,7 @@ async function processUrl(msg, url) {
|
||||||
await msg.channel.createMessage({
|
await msg.channel.createMessage({
|
||||||
content: cw && attachments.length > 0 ? `:warning: ${cw} || ${url} ||` : "",
|
content: cw && attachments.length > 0 ? `:warning: ${cw} || ${url} ||` : "",
|
||||||
embeds,
|
embeds,
|
||||||
|
files,
|
||||||
allowedMentions: {
|
allowedMentions: {
|
||||||
repliedUser: false,
|
repliedUser: false,
|
||||||
},
|
},
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue