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
115 lines (101 loc) • 3.83 kB
JavaScript
const axios = require('axios');
const cheerio = require('cheerio');
async function fbdl(url) {
const baseUrl = 'https://www.expertstool.com';
const downloadEndpoint = '/download-pinterest-video/';
const headers = {
'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',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.5',
'Connection': 'keep-alive',
'Content-Type': 'application/x-www-form-urlencoded'
};
try {
const formData = new URLSearchParams();
formData.append('url', url);
const response = await axios.post(
baseUrl + downloadEndpoint,
formData,
{
headers: headers,
maxRedirects: 5
}
);
const $ = cheerio.load(response.data);
const downloads = [];
$('a[href]').each((index, element) => {
const href = $(element).attr('href');
const text = $(element).text().trim();
if (href && (href.includes('fbcdn.net') || href.includes('facebook.com'))) {
if (href.match(/\.(jpg|jpeg|png|gif|mp4|avi|mov|webm)/i) || href.includes('video-')) {
let quality = 'auto';
if (text.toLowerCase().includes('hd') || text.includes('[HD]')) {
quality = 'HD';
} else if (text.toLowerCase().includes('sd') || text.includes('[SD]')) {
quality = 'SD';
}
downloads.push({
url: href,
type: href.match(/\.(mp4|avi|mov|webm|mkv)/i) || href.includes('video-') ? 'video' : 'image',
quality: quality,
buttonText: text
});
}
}
});
$('video').each((index, element) => {
const src = $(element).attr('src');
if (src && src.includes('fbcdn.net')) {
let quality = 'SD';
if (src.includes('720') || src.includes('1080') || src.includes('hd')) {
quality = 'HD';
} else if (src.includes('360') || src.includes('480') || src.includes('sd')) {
quality = 'SD';
}
downloads.push({
url: src,
type: 'video',
quality: quality,
source: 'video_tag'
});
}
});
$('img[src]').each((index, element) => {
const src = $(element).attr('src');
if (src && src.includes('fbcdn.net')) {
downloads.push({
url: src,
type: 'image',
quality: 'original',
source: 'img_tag'
});
}
});
const uniqueDownloads = downloads.filter((item, index, self) =>
index === self.findIndex(t => t.url === item.url)
);
if (uniqueDownloads.length > 0) {
return {
author: "Herza",
status: 200,
data: uniqueDownloads,
originalUrl: url
};
} else {
return {
author: "Herza",
status: 400,
message: 'No download links found',
originalUrl: url
};
}
} catch (error) {
return {
author: "Herza",
status: 500,
message: error.message,
originalUrl: url
};
}
}
module.exports = { fbdl }