Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const { Module } = require("../main");
- const {
- pinterestSearch,
- pinterestDl,
- } = require("./utils");
- const botConfig = require("../config");
- const axios = require("axios");
- Module(
- {
- pattern: "pins ?(.*)",
- fromMe: false,
- desc: "Pinterest downloader",
- usage: ".pinterest query or link",
- use: "download",
- },
- async (message, match) => {
- let userQuery = match[1] !== "" ? match[1] : message.reply_message.text;
- if (userQuery === "g") return;
- if (!userQuery)
- return await message.sendReply("_Need search term or pin video link_");
- if (/\bhttps?:\/\/\S+/gi.test(userQuery)) {
- userQuery = userQuery.match(/\bhttps?:\/\/\S+/gi)[0];
- let pinterestResult;
- try {
- pinterestResult = await pinterestDl(userQuery);
- } catch (err) {
- console.error("pinterestDl error:", err?.message || err);
- return await message.sendReply("_Server error_");
- }
- if (
- !pinterestResult ||
- !pinterestResult.status ||
- !pinterestResult.result
- )
- return await message.sendReply(
- "_No downloadable media found for this link_"
- );
- const url = pinterestResult.result;
- const quotedMessage = message.reply_message
- ? message.quoted
- : message.data;
- await message.sendMessage({ url }, "video", { quoted: quotedMessage });
- } else {
- let desiredCount = parseInt(userQuery.split(",")[1]) || 5;
- let searchQuery = userQuery.split(",")[0] || userQuery;
- let searchResults;
- try {
- const res = await pinterestSearch(searchQuery, desiredCount);
- if (!res || !res.status || !Array.isArray(res.result)) {
- return await message.sendReply("_No results found for this query_");
- }
- searchResults = res.result;
- } catch (err) {
- console.error("pinterestSearch error:", err?.message || err);
- return await message.sendReply(
- "_Server error while searching Pinterest_"
- );
- }
- const toDownload = Math.min(desiredCount, searchResults.length);
- await message.sendReply(
- `_Downloading ${toDownload} results for ${searchQuery} from Pinterest_`
- );
- const imagesToSend = searchResults
- .slice(0, toDownload)
- .map((url) => ({ image: url }));
- imagesToSend[0].caption = `_Pinterest results for ${searchQuery}_`;
- try {
- await message.client.albumMessage(
- message.jid,
- imagesToSend,
- message.data
- );
- } catch (error) {
- console.log(
- "Album send failed, falling back to individual sends:",
- error
- );
- for (const url of searchResults) {
- try {
- await message.sendMessage({ url }, "image");
- } catch (error) {
- console.error(
- "Error downloading pinterest item:",
- error?.message || error
- );
- }
- }
- }
- }
- }
- );
Advertisement
Add Comment
Please, Sign In to add comment