import { genericUserAgent } from "../../config.js"; const videoRegex = /"url":"(https:\/\/v1\.pinimg\.com\/videos\/.*?)"/g; const imageRegex = /src="(https:\/\/i\.pinimg\.com\/.*\.(jpg|gif))"/g; export default async function(o) { let id = o.id; if (!o.id && o.shortLink) { id = await fetch(`https://api.pinterest.com/url_shortener/${o.shortLink}/redirect/`, { redirect: "manual" }) .then(r => r.headers.get("location").split('pin/')[1].split('/')[0]) .catch(() => {}); } if (id.includes("--")) id = id.split("--")[1]; if (!id) return { error: "fetch.fail" }; const html = await fetch(`https://www.pinterest.com/pin/${id}/`, { headers: { "user-agent": genericUserAgent } }).then(r => r.text()).catch(() => {}); if (!html) return { error: "fetch.fail" }; const videoLink = [...html.matchAll(videoRegex)] .map(([, link]) => link) .find(a => a.endsWith('.mp4') && a.includes('720p')); if (videoLink) return { urls: videoLink, filename: `pinterest_${o.id}.mp4`, audioFilename: `pinterest_${o.id}_audio` } const imageLink = [...html.matchAll(imageRegex)] .map(([, link]) => link) .find(a => a.endsWith('.jpg') || a.endsWith('.gif')); const imageType = imageLink.endsWith(".gif") ? "gif" : "jpg" if (imageLink) return { urls: imageLink, isPhoto: true, filename: `pinterest_${o.id}.${imageType}` } return { error: "fetch.empty" }; }