// digikala.js const fetch = require("node-fetch"); async function searchDigikala(query, limit = 12) { if (!query) return []; try { const encodedQuery = encodeURIComponent(query); const url = `https://api.digikala.com/v3/search/?q=${encodedQuery}`; const headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36", "Accept": "application/json", "Accept-Language": "fa-IR,fa;q=0.9,en-US;q=0.8,en;q=0.7", "Referer": `https://www.digikala.com/search/?q=${encodedQuery}`, "Origin": "https://www.digikala.com" }; const response = await fetch(url, { headers }); if (!response.ok) { console.error(`❌ Digikala API error: ${response.status} ${response.statusText}`); return []; } const data = await response.json(); // 🔥 مسیر واقعی بر اساس داده شما: data.widgets[0].data.products const products = data?.widgets?.[0]?.data?.products || []; if (!Array.isArray(products) || products.length === 0) { console.log("⚠️ No products found in Digikala API response (widgets[0].data.products is empty or not array)"); return []; } return products.slice(0, limit).map(item => { const title = item.title_fa || "بدون عنوان"; const price = item.default_variant?.price?.selling_price || null; const formattedPrice = price !== null ? new Intl.NumberFormat('fa-IR').format(price) + " تومان" : "—"; // تصویر: url یک آرایه است → اولین عنصر let image = "https://via.placeholder.com/150"; if (Array.isArray(item.images?.main?.url) && item.images.main.url.length > 0) { image = item.images.main.url[0].replace(/\s+/g, ''); } const link = item.url?.uri ? `https://www.digikala.com${item.url.uri}` : `https://www.digikala.com/product/dkp-${item.id}/`; return { id: item.id, title, price: formattedPrice, image, link, description: "" }; }); } catch (err) { console.error("🔴 Digikala search error:", err.message); return []; } } // برای جلوگیری از خطا در server.cjs async function getProductById() { return null; } module.exports = { searchDigikala, getProductById };