From 0daeded711aac120bf9b7145749913c100a8825e Mon Sep 17 00:00:00 2001 From: mic Date: Tue, 18 Jun 2024 21:56:34 +0200 Subject: [PATCH] chatgpt_getFromDOM returns an HTML string for the last answer --- js/mzta-chatgpt.js | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/js/mzta-chatgpt.js b/js/mzta-chatgpt.js index 9d2f3d28..b4be585f 100644 --- a/js/mzta-chatgpt.js +++ b/js/mzta-chatgpt.js @@ -79,10 +79,24 @@ async function chatgpt_getFromDOM(pos) { } // Extract the new HTML string responseDivs[responseDivs.length - 1].innerHTML = doc.body.innerHTML; - response = responseDivs[responseDivs.length - 1].textContent; + //response = responseDivs[responseDivs.length - 1].textContent; + response = responseDivs[responseDivs.length - 1].innerHTML; + const parser2 = new DOMParser(); + const doc2 = parser2.parseFromString(response, 'text/html'); + + // Get all elements in the parsed document + const allElements = doc2.body.querySelectorAll('*'); + + // Tags to exclude + const excludeTags = ['div', 'text', 'svg', 'path', 'button']; + // Filter out elements that should be excluded + const keepElements = Array.from(allElements).filter(element => !excludeTags.includes(element.tagName.toLowerCase())); + + // Create a new HTML string containing all non-div elements in order + response = keepElements.map(element => element.outerHTML).join(''); //console.log('chatgpt_getFromDOM: '+response); //console.log('chatgpt_getFromDOM: [HTML] ' + responseDivs[responseDivs.length - 1].innerHTML.replace(/]*>/gi, '').replace(/<\\/div>/gi, '').replace(/]*>/gi, '').replace(/<\\/svg>/gi, '').replace(/]*>/gi, '').replace(/<\\/path>/gi, '').replace(/]*>/gi, '').replace(/<\\/text>/gi, '').replace(/]*>/gi, '').replace(/<\\/span>/gi, '').replace(/]*>/gi, '').replace(/<\\/button>/gi, '')); - } else { // get nth response + } else { // get nth response --- HERE ONLY TEXT FROM RESPONSE, NO HTML const nthOfResponse = ( // Calculate base number @@ -109,7 +123,7 @@ async function chatgpt_getFromDOM(pos) { } response = response.replace(/^ChatGPT(?:ChatGPT)?/, ''); // strip sender name response = response.trim().replace(/^"|"$/g, ''); // strip quotation marks - //console.log('chatgpt_getFromDOM: ' + response); + console.log('>>>>>>>>>>>>>> chatgpt_getFromDOM: ' + JSON.stringify(response)); } return response; }