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