feat: send Media HD (#3535)

* Changing the quality of media downloads

* return function result

* add option sendImageAsHd

* change example

* fix quotes

* chore: remove unused code

---------

Co-authored-by: alechkos <93551621+alechkos@users.noreply.github.com>
This commit is contained in:
tofers 2025-06-02 22:19:22 +03:00 • committed by GitHub
commit 0ffb66fdb1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 25 additions and 9 deletions

View file

@ -840,6 +840,7 @@ class Client extends EventEmitter {
* @property {boolean} [sendVideoAsGif=false] - Send video as gif
* @property {boolean} [sendMediaAsSticker=false] - Send media as a sticker
* @property {boolean} [sendMediaAsDocument=false] - Send media as a document
* @property {boolean} [sendMediaAsHd=false] - Send image as quality HD
* @property {boolean} [isViewOnce=false] - Send photo/video as a view once message
* @property {boolean} [parseVCards=true] - Automatically parse vCards and send them as contacts
* @property {string} [caption] - Image or video caption
@ -894,6 +895,7 @@ class Client extends EventEmitter {
sendVideoAsGif: options.sendVideoAsGif,
sendMediaAsSticker: options.sendMediaAsSticker,
sendMediaAsDocument: options.sendMediaAsDocument,
sendMediaAsHd: options.sendMediaAsHd,
caption: options.caption,
quotedMessageId: options.quotedMessageId,
parseVCards: options.parseVCards !== false,
@ -2145,7 +2147,7 @@ class Client extends EventEmitter {
return false;
}, chatId);
}
/**
* Save new contact to user's addressbook or edit the existing one
* @param {string} phoneNumber The contact's phone number in a format "17182222222", where "1" is a country code

View file

@ -34,6 +34,7 @@ exports.LoadUtils = () => {
forceGif: options.sendVideoAsGif,
forceVoice: options.sendAudioAsVoice,
forceDocument: options.sendMediaAsDocument,
forceMediaHd: options.sendMediaAsHd,
sendToChannel: isChannel
});
mediaOptions.caption = options.caption;
@ -363,16 +364,21 @@ exports.LoadUtils = () => {
};
};
window.WWebJS.processMediaData = async (mediaInfo, { forceSticker, forceGif, forceVoice, forceDocument, sendToChannel }) => {
window.WWebJS.processMediaData = async (mediaInfo, { forceSticker, forceGif, forceVoice, forceDocument, forceMediaHd, sendToChannel }) => {
const file = window.WWebJS.mediaInfoToFile(mediaInfo);
const opaqueData = await window.Store.OpaqueData.createFromData(file, file.type);
const mediaPrep = window.Store.MediaPrep.prepRawMedia(
opaqueData, {
asSticker: forceSticker,
asGif: forceGif,
isPtt: forceVoice,
asDocument: forceDocument
});
const mediaParams = {
asSticker: forceSticker,
asGif: forceGif,
isPtt: forceVoice,
asDocument: forceDocument
};
if (forceMediaHd && file.type.indexOf('image/') === 0) {
mediaParams.maxDimension = 2560;
}
const mediaPrep = window.Store.MediaPrep.prepRawMedia(opaqueData, mediaParams);
const mediaData = await mediaPrep.waitForPrep();
const mediaObject = window.Store.MediaObject.getOrCreateMediaObject(mediaData.filehash);
const mediaType = window.Store.MediaTypes.msgToMediaType({