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 = {
 | 
			
		||||
  pastelize,
 | 
			
		||||
  getTopColor,
 | 
			
		||||
| 
						 | 
				
			
			@ -384,4 +397,5 @@ module.exports = {
 | 
			
		|||
  selectionMessage,
 | 
			
		||||
  lookupUser,
 | 
			
		||||
  parseHtmlEntities,
 | 
			
		||||
  getUploadLimit,
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@ const {MessageFlags, Routes} = require("oceanic.js");
 | 
			
		|||
const events = require("../lib/events.js");
 | 
			
		||||
const logger = require("../lib/logger.js");
 | 
			
		||||
const {hasFlag} = require("../lib/guildSettings.js");
 | 
			
		||||
const {parseHtmlEntities} = require("../lib/utils.js");
 | 
			
		||||
const {parseHtmlEntities, getUploadLimit} = require("../lib/utils.js");
 | 
			
		||||
 | 
			
		||||
const FRIENDLY_USERAGENT =
 | 
			
		||||
  "HiddenPhox/fedimbed (https://gitlab.com/Cynosphere/HiddenPhox)";
 | 
			
		||||
| 
						 | 
				
			
			@ -198,16 +198,19 @@ async function processUrl(msg, url) {
 | 
			
		|||
        videos.push({
 | 
			
		||||
          url: attachment.url,
 | 
			
		||||
          desc: attachment.name,
 | 
			
		||||
          type: attachment.mediaType,
 | 
			
		||||
        });
 | 
			
		||||
      } else if (attachment.mediaType.startsWith("image/")) {
 | 
			
		||||
        images.push({
 | 
			
		||||
          url: attachment.url,
 | 
			
		||||
          desc: attachment.name,
 | 
			
		||||
          type: attachment.mediaType,
 | 
			
		||||
        });
 | 
			
		||||
      } else if (attachment.mediaType.startsWith("audio/")) {
 | 
			
		||||
        audios.push({
 | 
			
		||||
          url: attachment.url,
 | 
			
		||||
          desc: attachment.name,
 | 
			
		||||
          type: attachment.mediaType,
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -352,6 +355,36 @@ async function processUrl(msg, url) {
 | 
			
		|||
    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
 | 
			
		||||
  //await msg.edit({flags: MessageFlags.SUPPRESS_EMBEDS}).catch(() => {});
 | 
			
		||||
  await hf.bot.rest
 | 
			
		||||
| 
						 | 
				
			
			@ -367,6 +400,7 @@ async function processUrl(msg, url) {
 | 
			
		|||
  await msg.channel.createMessage({
 | 
			
		||||
    content: cw && attachments.length > 0 ? `:warning: ${cw} || ${url} ||` : "",
 | 
			
		||||
    embeds,
 | 
			
		||||
    files,
 | 
			
		||||
    allowedMentions: {
 | 
			
		||||
      repliedUser: false,
 | 
			
		||||
    },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue