Added dupplicate title support for more accurate results

This commit is contained in:
cyi1341 2024-02-21 17:42:55 +08:00
parent 9f1e5ef42f
commit 00e4779278
1 changed files with 52 additions and 2 deletions

View File

@ -314,6 +314,53 @@
return urlsArray;
}
function extractJsonObjects(limit) {
// Set the default value of the limit parameter to Infinity
limit = limit || Infinity;
// Select all <div> elements with the class "font-medium"
const elements = document.querySelectorAll('div.font-medium');
// Initialize an empty array to store the JSON objects
const jsonObjects = [];
// Loop through the elements
for (const element of elements) {
// Extract the text inside the element
const text = element.textContent;
// Try to parse the text as JSON
try {
// Check if the text is a valid JSON object
if (text.startsWith('{') && text.endsWith('}')) {
// Parse the text as JSON
const jsonObject = JSON.parse(text);
// If the parsing is successful, add the JSON object to the array
jsonObjects.push(jsonObject);
} else {
// If the text is not a valid JSON object, try to parse it as a single property object
const jsonObject = JSON.parse(`{"data": "${text}"}`);
// If the parsing is successful, add the JSON object to the array
jsonObjects.push(jsonObject.data);
}
} catch (error) {
// If the parsing fails, log the text and the error message
console.error(`Failed to parse JSON from element: ${text}`);
console.error(error);
}
// If the limit has been reached, break the loop
if (jsonObjects.length >= limit) {
break;
}
}
// Return the array of JSON objects
return jsonObjects;
}
async function urlsToBlobs(imageUrls) {
const blobPromises = imageUrls.map(imageUrl => {
return fetch(imageUrl)
@ -1060,7 +1107,7 @@
}
console.log('Question Informations (Review): ', questionResults);
await new Promise(resolve => setTimeout(resolve, 2000));
possibleCategories = getPossibleCategories();
possibleCategories = getPossibleCategories();
if (possibleCategories) {
console.log('Possible Categories (Review): ', possibleCategories);
}
@ -1074,10 +1121,13 @@
var maxIndex = Math.min(numImages, 4) - 1;
if (maxIndex > -1) {
var duplicateCheckTitles = extractJsonObjects(4)
console.log('Duplicate Check Titles (Review): ', duplicateCheckTitles);
for (let i = 0; i <= maxIndex; i++) {
if (!isSubmitted) {
var reviewImageDuplicate = await urlsToBlobs([mainPhoto, nearbyImages[i]])
var reviewDuplicateFinalString = reviewDuplicateText + bottomText
var reviewDuplicateTitle = `Title of First image: ${title}\nTitle of Second image: ${duplicateCheckTitles[i]}`;
var reviewDuplicateFinalString = reviewDuplicateText + reviewDuplicateTitle + bottomText
reviewDuplicateChoice[i] = await geminiCallAPI(reviewDuplicateFinalString, reviewImageDuplicate)
if (Object.values(reviewDuplicateChoice[i])[0] === true) {
clickNearbyImages(i)