const cloudscraper = require("cloudscraper"); const path = require("path"); const fs = require("fs-extra"); const axios = require("axios"); module.exports.config = { name: "image", version: "1.5", hasPermission: 0, description: "Find images from Google Search", credits: "Jonell Magallanes", usePrefix: false, commandCategory: "Search", usages: "[query]", cooldowns: 0, }; module.exports.run = async function ({ api, event, args }) { try { const keySearch = args.join(" "); if (!keySearch.includes("-")) { return api.sendMessage( "ā›” š—œš—»š˜ƒš—®š—¹š—¶š—± š—Øš˜€š—²\n━━━━━━━━━━━━━━━\n\nPlease enter the search query and number of images (1-99). Example: wallpaper -5", event.threadID, event.messageID ); } api.sendMessage("šŸ” Searching for images... Please wait.", event.threadID, event.messageID); const keySearchs = keySearch.substr(0, keySearch.indexOf('-')).trim(); let numberSearch = parseInt(keySearch.split("-").pop().trim()) || 10; if (isNaN(numberSearch) || numberSearch < 1 || numberSearch > 10) { return api.sendMessage( "ā›” š—œš—»š˜ƒš—®š—¹š—¶š—± š—”š˜‚š—ŗš—Æš—²š—æ\n━━━━━━━━━━━━━━━\n\nPlease enter a valid number of images (1-99). Example: wallpaper -5", event.threadID, event.messageID ); } const apiUrl = `https://ccprojectsapis.zetsu.xyz/api/imagesearch?title=${encodeURIComponent(keySearchs)}&count=${numberSearch}&safe=true`; console.log(`Fetching data from API: ${apiUrl}`); const res = await axios.get(apiUrl); const data = res.data.results; if (!data || data.length === 0) { return api.sendMessage( `āŒ No results found for "${keySearchs}". Try another search.`, event.threadID, event.messageID ); } const imgData = []; for (let i = 0; i < Math.min(numberSearch, data.length); i++) { console.log(`Downloading image ${i + 1} from: ${data[i].url}`); let imgResponse; try { imgResponse = await cloudscraper.get({ uri: data[i].url, encoding: null }); } catch (err) { console.error(`Error downloading image ${i + 1}:`, err); continue; } const imgPath = path.join(__dirname, "cache", `${i + 1}.jpg`); await fs.outputFile(imgPath, imgResponse); imgData.push(fs.createReadStream(imgPath)); } await api.sendMessage({ body: `šŸ“ø š—œš—ŗš—®š—“š—² š—¦š—²š—®š—æš—°š—µ š—šš—¼š—¼š—“š—¹š—²\n━━━━━━━━━━━━━━━\n\nHere are the top ${numberSearch} results for "${keySearchs}".`, attachment: imgData, }, event.threadID, event.messageID); console.log(`Images successfully sent to thread ${event.threadID}`); await fs.remove(path.join(__dirname, "cache")); console.log("Cache directory cleaned up."); } catch (error) { console.error("Error fetching images:", error); return api.sendMessage( "āš ļø An error occurred while fetching images. Please try again later.", event.threadID, event.messageID ); } };