JerryCoderr

pin-rgnk.js

Mar 4th, 2026 (edited)
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const { Module } = require("../main");
  2. const {
  3.   pinterestSearch,
  4.   pinterestDl,
  5. } = require("./utils");
  6. const botConfig = require("../config");
  7. const axios = require("axios");
  8.  
  9.  
  10. Module(
  11.   {
  12.     pattern: "pins ?(.*)",
  13.     fromMe: false,
  14.     desc: "Pinterest downloader",
  15.     usage: ".pinterest query or link",
  16.     use: "download",
  17.   },
  18.   async (message, match) => {
  19.     let userQuery = match[1] !== "" ? match[1] : message.reply_message.text;
  20.     if (userQuery === "g") return;
  21.     if (!userQuery)
  22.       return await message.sendReply("_Need search term or pin video link_");
  23.  
  24.     if (/\bhttps?:\/\/\S+/gi.test(userQuery)) {
  25.       userQuery = userQuery.match(/\bhttps?:\/\/\S+/gi)[0];
  26.       let pinterestResult;
  27.       try {
  28.         pinterestResult = await pinterestDl(userQuery);
  29.       } catch (err) {
  30.         console.error("pinterestDl error:", err?.message || err);
  31.         return await message.sendReply("_Server error_");
  32.       }
  33.  
  34.       if (
  35.         !pinterestResult ||
  36.         !pinterestResult.status ||
  37.         !pinterestResult.result
  38.       )
  39.         return await message.sendReply(
  40.           "_No downloadable media found for this link_"
  41.         );
  42.  
  43.       const url = pinterestResult.result;
  44.       const quotedMessage = message.reply_message
  45.         ? message.quoted
  46.         : message.data;
  47.       await message.sendMessage({ url }, "video", { quoted: quotedMessage });
  48.     } else {
  49.       let desiredCount = parseInt(userQuery.split(",")[1]) || 5;
  50.       let searchQuery = userQuery.split(",")[0] || userQuery;
  51.       let searchResults;
  52.       try {
  53.         const res = await pinterestSearch(searchQuery, desiredCount);
  54.         if (!res || !res.status || !Array.isArray(res.result)) {
  55.           return await message.sendReply("_No results found for this query_");
  56.         }
  57.         searchResults = res.result;
  58.       } catch (err) {
  59.         console.error("pinterestSearch error:", err?.message || err);
  60.         return await message.sendReply(
  61.           "_Server error while searching Pinterest_"
  62.         );
  63.       }
  64.  
  65.       const toDownload = Math.min(desiredCount, searchResults.length);
  66.       await message.sendReply(
  67.         `_Downloading ${toDownload} results for ${searchQuery} from Pinterest_`
  68.       );
  69.  
  70.       const imagesToSend = searchResults
  71.         .slice(0, toDownload)
  72.         .map((url) => ({ image: url }));
  73.       imagesToSend[0].caption = `_Pinterest results for ${searchQuery}_`;
  74.       try {
  75.         await message.client.albumMessage(
  76.           message.jid,
  77.           imagesToSend,
  78.           message.data
  79.         );
  80.       } catch (error) {
  81.         console.log(
  82.           "Album send failed, falling back to individual sends:",
  83.           error
  84.         );
  85.         for (const url of searchResults) {
  86.           try {
  87.             await message.sendMessage({ url }, "image");
  88.           } catch (error) {
  89.             console.error(
  90.               "Error downloading pinterest item:",
  91.               error?.message || error
  92.             );
  93.           }
  94.         }
  95.       }
  96.     }
  97.   }
  98. );
Advertisement
Add Comment
Please, Sign In to add comment