From e032934c50f44da53862c958b0b28a48145c5dcc Mon Sep 17 00:00:00 2001 From: q Date: Wed, 15 Oct 2025 14:43:51 -0400 Subject: [PATCH] Adding image source & requester to event json --- index.js | 45 +++++++++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/index.js b/index.js index 6d8b20f..7a62aac 100644 --- a/index.js +++ b/index.js @@ -33,7 +33,7 @@ const searxngCommands = [ unsafeImageSearchCmd ]; -function sendImage(results, resultIndex, roomId, name, searchCommand, retryCount, matrixClient, uploadMatrixClient) { +function sendImage(results, resultIndex, roomId, name, searchCommand, retryCount, matrixClient, uploadMatrixClient, requester) { const resultObj = results[resultIndex] var imageURL; @@ -54,19 +54,20 @@ function sendImage(results, resultIndex, roomId, name, searchCommand, retryCount console.debug("[Search text: "+searchCommand+"], "+"[imageURL: "+imageURL+"], "+"[retryCount: "+retryCount+"]"+", [Engine: "+resultObj.engines[0]+"]"+", [content-type: "+imageType+"]"); const uploadResponse = await uploadMatrixClient.uploadContent(imageResponse.data, { rawResponse: false, type: imageType }); const matrixUrl = uploadResponse.content_uri; + var filename; switch(imageType) { case "image/jpeg": case "image/jpg": - name = name + ".jpg"; + filename = name + ".jpg"; break; case "image/png": - name = name + ".png"; + filename = name + ".png"; break; case "image/gif": - name = name + ".gif"; + filename = name + ".gif"; break; case "image/webp": - name = name + ".webp"; + filename = name + ".webp"; break; case "text/html": case "text/html; charset=UTF-8": @@ -79,25 +80,45 @@ function sendImage(results, resultIndex, roomId, name, searchCommand, retryCount case ".jpg": case ".jpeg": imageType = "image/jpg"; - name = name + ".jpg"; + filename = name + ".jpg"; break; case ".png": imageType = "image/png"; - name = name + ".png"; + filename = name + ".png"; break; case ".gif": imageType = "image/gif"; - name = name + ".gif"; + filename = name + ".gif"; break; case ".webp": imageType = "image/webp"; - name = name + ".webp"; + filename = name + ".webp"; break; } break; } - matrixClient.sendImageMessage(roomId, matrixUrl, {"mimetype": imageType}, name, null); + //matrixClient.sendImageMessage(roomId, matrixUrl, {"mimetype": imageType}, name, null); + + const content = { + msgtype: "m.image", + body: "\"" + name + "\" Requested by " + requester, + filename: filename, + url: matrixUrl, + requested_by: requester, + image_source: imageURL, + info: { + mimetype: imageType + }, + }; + matrixClient.sendEvent(roomId, "m.room.message", content); + /* + await client.sendEvent(roomId, "m.room.message", content, "", (err, res) => { + if (err) console.error("Failed to send image:", err); + else console.log("Image sent successfully:", res); + }); + */ + matrixClient.sendTyping(roomId, false, 3000); } catch (error) { retryCount = retryCount + 1; @@ -111,7 +132,7 @@ function sendImage(results, resultIndex, roomId, name, searchCommand, retryCount else { console.warn("Trying next result for '"+searchCommand+"'"); console.error(error); - sendImage(results, resultIndex, roomId, name, searchCommand, retryCount, matrixClient, uploadMatrixClient); + sendImage(results, resultIndex, roomId, name, searchCommand, retryCount, matrixClient, uploadMatrixClient, requester); } } })(); @@ -224,7 +245,7 @@ Searxng.prototype.handleMessage = function(event, room) { return; } - sendImage(results, resultIndex, room.roomId, name, event.getContent().body, 0, matrixClient, uploadMatrixClient); + sendImage(results, resultIndex, room.roomId, name, event.getContent().body, 0, matrixClient, uploadMatrixClient, event.getSender()); } else { matrixClient.sendNotice(room.roomId, "Error occurred during \"" + event.getContent().body + "\"");