UNPKG

notmebotz-tools

Version:

Sebuah Tools yang berfungsi untuk mendownload Video atau Foto dari media sosial, serta sebagai tools yang berguna untuk aplikasi kamu seperti untuk BOT

142 lines (129 loc) 4.08 kB
const axios = require('axios'); const crypto = require('crypto'); /* IG DOWNLOADER BY HERZA THANKS TO *NB SCRIPT* https://whatsapp.com/channel/0029Vb5EZCjIiRotHCI1213L Join My Channel Please https://whatsapp.com/channel/0029VaGVOvq1iUxY6WgHLv2R FOR THE SIGNATURE KEY BASE *https://igram.world* Follow my github please https://github.com/herzonly DONT DELETE WM PLEASE */ const IGRAM_BASE_URL = 'https://api.igram.world'; const SECRET_KEY = '40a71e771b673e3a35200acdd331bbd616fc4ba76c6d77d821a25985e46fb488'; const TIMESTAMP = 1739185248317; const headers = { 'Accept': 'application/json, text/plain, */*', 'Content-Type': 'application/json', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', 'Origin': 'https://igram.world', 'Referer': 'https://igram.world/' }; async function getServerTime() { try { const response = await axios.get(`${IGRAM_BASE_URL}/msec`, { headers }); return Math.floor(response.data.msec * 1000); } catch (error) { return 0; } } function generateSignature(url, timestamp) { const hash = `${url}${timestamp}${SECRET_KEY}`; return crypto.createHash('sha256').update(hash).digest('hex'); } async function igdl(url) { try { const serverTime = await getServerTime(); const currentTime = Date.now(); const adjustedTime = serverTime ? serverTime : currentTime; const timeOffset = serverTime ? currentTime - serverTime : 0; const signature = generateSignature(url, adjustedTime); const requestBody = { url: url, ts: adjustedTime, _ts: TIMESTAMP, _tsc: timeOffset, _s: signature }; const response = await axios.post( `${IGRAM_BASE_URL}/api/convert`, requestBody, { headers } ); const data = response.data; if (Array.isArray(data)) { return { author: "Herza", status: 200, data: { success: true, type: "slide", slides: data.map(slide => ({ mediaUrls: slide.url ? slide.url.map(media => ({ url: media.url, type: media.type, name: media.name, ext: media.ext })) : [], thumbnailUrl: slide.thumb || null })), metadata: { title: data[0]?.meta?.title || null, source: data[0]?.meta?.source || null, shortcode: data[0]?.meta?.shortcode || null, username: data[0]?.meta?.username || null, takenAt: data[0]?.meta?.taken_at || null, likeCount: data[0]?.meta?.like_count || 0, commentCount: data[0]?.meta?.comment_count || 0, comments: data[0]?.meta?.comments || [] }, hosting: data[0]?.hosting || null, timestamp: data[0]?.timestamp || null, rawResponse: data } }; } else { return { author: "Herza", status: 200, data: { success: true, type: "video", videoUrls: data.url ? data.url.map(item => ({ url: item.url, type: item.type, name: item.name, ext: item.ext })) : [], thumbnailUrl: data.thumb || null, metadata: { title: data.meta?.title || null, source: data.meta?.source || null, shortcode: data.meta?.shortcode || null, username: data.meta?.username || null, takenAt: data.meta?.taken_at || null, likeCount: data.meta?.like_count || 0, commentCount: data.meta?.comment_count || 0, comments: data.meta?.comments || [] }, hosting: data.hosting || null, timestamp: data.timestamp || null, rawResponse: data } }; } } catch (error) { return { author: "Herza", status: 500, success: false, error: error.message, errorDetails: error.response?.data || null }; } } module.exports = { igdl }