Get Mimetype or extension of Recieving Media #168
Unanswered
hetaljoshi2425
asked this question in
Q&A
Replies: 1 comment
-
Have you managed to decode the files that are received to be able to download them? how did you do it ? |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
I want to ask How Can I get filetype or mimetype or extension of file Whenever someone sending me a document or Image ?
So I can convert it to buffer and create a file as per extension.
I have created a function for parsing message.
async function parseIncomingMessage(msg) {
const type = Object.keys(msg.message || {})[0];
const body =
type === "conversation" && msg.message.conversation
? msg.message.conversation
: type == "imageMessage" && msg.message.imageMessage.caption
? msg.message.imageMessage.caption
: type == "videoMessage" && msg.message.videoMessage.caption
? msg.message.videoMessage.caption
: type == "extendedTextMessage" && msg.message.extendedTextMessage.text
? msg.message.extendedTextMessage.text
: type == "messageContextInfo" && msg.message.listResponseMessage?.title
? msg.message.listResponseMessage.title
: type == "messageContextInfo"
? msg.message.buttonsResponseMessage.selectedDisplayText
: "";
const d = body.toLowerCase();
const command = await removeForbiddenCharacters(d);
const senderName = msg?.pushName || "";
const from = msg.key.remoteJid.split("@")[0];
let bufferImage;
// const urlImage = (type == 'imageMessage') && msg.message.imageMessage.caption ? msg.message.imageMessage.caption : null;
if (type === "imageMessage") {
const stream = await downloadContentFromMessage(
msg.message.imageMessage,
"image"
);
let buffer = Buffer.from([]);
for await (const chunk of stream) {
buffer = Buffer.concat([buffer, chunk]);
}
bufferImage = buffer.toString("base64");
} else {
urlImage = null;
}
if (type == "documentMessage") {
const mediaDownload = await downloadContentFromMessage(
msg.message.documentMessage,
"document"
);
let buffer = Buffer.from([]);
for await (const chunk of mediaDownload) {
buffer = Buffer.concat([buffer, chunk]);
}
bufferImage = buffer.toString("base64");
}
if (type == "audioMessage") {
const mediaDownload = await downloadContentFromMessage(
msg.message.audioMessage,
"audio"
);
}
if (type == "videoMessage") {
const mediaDownload = await downloadContentFromMessage(
msg.message.videoMessage,
"video"
);
let buffer = Buffer.from([]);
for await (const chunk of mediaDownload) {
buffer = Buffer.concat([buffer, chunk]);
}
console.log("buffer", buffer);
bufferImage = buffer.toString("base64");
}
if (
type == "extendedTextMessage" &&
msg.message.extendedTextMessage.contextInfo.quotedMessage.imageMessage
) {
const mediaDownload = await downloadContentFromMessage(
msg.message.extendedTextMessage.contextInfo.quotedMessage.imageMessage,
"image"
);
let buffer = Buffer.from([]);
for await (const chunk of mediaDownload) {
buffer = Buffer.concat([buffer, chunk]);
}
console.log("buffer", buffer);
bufferImage = buffer.toString("base64");
}
if (
type == "extendedTextMessage" &&
msg.message.extendedTextMessage.contextInfo.quotedMessage.documentMessage
) {
const mediaDownload = await downloadContentFromMessage(
msg.message.extendedTextMessage.contextInfo.quotedMessage.documentMessage,
"document"
);
let buffer = Buffer.from([]);
for await (const chunk of mediaDownload) {
buffer = Buffer.concat([buffer, chunk]);
}
console.log("buffer", buffer);
bufferImage = buffer.toString("base64");
}
if (
type == "extendedTextMessage" &&
msg.message.extendedTextMessage.contextInfo.quotedMessage.audioMessage
) {
const mediaDownload = await downloadContentFromMessage(
msg.message.extendedTextMessage.contextInfo.quotedMessage.audioMessage,
"audio"
);
let buffer = Buffer.from([]);
for await (const chunk of mediaDownload) {
buffer = Buffer.concat([buffer, chunk]);
}
console.log("buffer", buffer);
bufferImage = buffer.toString("base64");
}
if (
type == "extendedTextMessage" &&
msg.message.extendedTextMessage.contextInfo.quotedMessage.videoMessage
) {
const mediaDownload = await downloadContentFromMessage(
msg.message.extendedTextMessage.contextInfo.quotedMessage.videoMessage,
"video"
);
let buffer = Buffer.from([]);
for await (const chunk of mediaDownload) {
buffer = Buffer.concat([buffer, chunk]);
}
console.log("buffer", buffer);
bufferImage = buffer.toString("base64");
}
return { command, bufferImage, from };
}
Beta Was this translation helpful? Give feedback.
All reactions