test-downloader
Version:
Social Media Downloader.
311 lines (279 loc) • 10.1 kB
JavaScript
const axios = require('axios');
const cheerio = require('cheerio');
const { version, config } = require('../package.json');
// Helpers
const isURL = url => /^https?:\/\/[^\s/$.?#].[^\s]*$/.test(url);
const generateUA = () => `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.${Math.floor(Math.random() * 1000)}.100 Safari/537.36`;
const _errorResponse = (message) => ({
developer: 'MD ARIFUL ISLAM ASIF',
Facebook: 'https://www.facebook.com/ARIF.THE.REBEL.233',
WhatsApp: 'wa.me/+880190560009',
status: false,
message,
note: 'REPORT TO ADMIN \n https://t.me/TRA_ARIFVAU'
});
const _fetchapi = async (endpoint, url) => {
try {
const response = await axios.get(`${config.baseUrl}/${endpoint}`, {
params: { url },
headers: {
'Content-Type': 'application/json',
'User-Agent': `btch/${version}`
}
});
return response.data;
} catch (error) {
throw new Error(`Error fetching from ${endpoint}: ${error.message}`);
}
};
// TikTok Downloader
async function rebeltiktokdl(url) {
try {
const data = await _fetchapi('ttdl', url);
return {
developer: 'MD ARIFUL ISLAM ASIF',
Facebook: 'https://www.facebook.com/ARIF.THE.REBEL.233',
WhatsApp: 'wa.me/+880190560009',
title: data.title,
title_audio: data.title_audio,
thumbnail: data.thumbnail,
video: data.video,
audio: data.audio,
likes: data.likes || null,
views: data.views || null
};
} catch (error) {
return _errorResponse(error.message);
}
}
// Instagram Downloader
async function rebelinstadl(url) {
try {
const data = await _fetchapi('igdl', url);
if (!data || data.status === false) {
return _errorResponse(data?.msg || 'Result Not Found! Check Your Url Now!');
}
return data.map(item => ({
developer: 'MD ARIFUL ISLAM ASIF',
Facebook: 'https://www.facebook.com/ARIF.THE.REBEL.233',
WhatsApp: 'wa.me/+880190560009',
thumbnail: item.thumbnail,
title: item.title || data.title,
url: item.url,
resolution: item.resolution,
shouldRender: item.shouldRender
}));
} catch {
return _errorResponse('Request Failed With Code 401');
}
}
// Twitter Downloader
async function rebeltwitter(url) {
try {
const data = await _fetchapi('twitter', url);
return {
developer: 'MD ARIFUL ISLAM ASIF',
Facebook: 'https://www.facebook.com/ARIF.THE.REBEL.233',
WhatsApp: 'wa.me/+880190560009',
title: data.title,
url: data.url
};
} catch (error) {
return _errorResponse(error.message);
}
}
// YouTube Downloader
async function rebelyt(url) {
try {
const data = await _fetchapi('youtube', url);
return {
developer: 'MD ARIFUL ISLAM ASIF',
Facebook: 'https://www.facebook.com/ARIF.THE.REBEL.233',
WhatsApp: 'wa.me/+880190560009',
title: data.title,
thumbnail: data.thumbnail,
author: data.author,
mp3: data.mp3,
mp4: data.mp4
};
} catch (error) {
return _errorResponse(error.message);
}
}
// Facebook Downloader
function rebelfbdown(videoUrl, cookie, useragent) {
return new Promise((resolve, reject) => {
if (!videoUrl || !videoUrl.trim()) return reject('Please specify the Facebook URL');
if (!["facebook.com", "fb.watch"].some(domain => videoUrl.includes(domain))) {
return reject('Please enter the valid Facebook URL');
}
const headers = {
authority: 'www.facebook.com',
'user-agent': useragent || generateUA(),
cookie: cookie || 'sb=Rn8BYQvCEb2fpMQZjsd6L382; datr=Rn8BYbyhXgw9RlOvmsosmVNT; c_user=100003164630629; _fbp=fb.1.1629876126997.444699739; wd=1920x939; spin=r.1004812505_b.trunk_t.1638730393_s.1_v.2_; xs=28%3A8ROnP0aeVF8XcQ%3A2%3A1627488145%3A-1%3A4916%3A%3AAcWIuSjPy2mlTPuZAeA2wWzHzEDuumXI89jH8a_QIV8; fr=0jQw7hcrFdas2ZeyT.AWVpRNl_4noCEs_hb8kaZahs-jA.BhrQqa.3E.AAA.0.0.BhrQqa.AWUu879ZtCw',
accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8'
};
axios.get(videoUrl, { headers }).then(({ data }) => {
data = data.replace(/"/g, '"').replace(/&/g, '&');
const parse = key => JSON.parse(`{"text":"${key}"}`).text;
const sd = data.match(/"browser_native_sd_url":"(.*?)"/)?.[1] ||
data.match(/"playable_url":"(.*?)"/)?.[1] ||
data.match(/sd_src\s*:\s*"([^"]*)"/)?.[1];
if (!sd) return reject('Unable to fetch video information');
const result = {
developer: 'MD ARIFUL ISLAM ASIF',
Facebook: 'https://www.facebook.com/ARIF.THE.REBEL.233',
WhatsApp: 'wa.me/+880190560009',
url: videoUrl,
sd: parse(sd),
hd: parse(data.match(/"browser_native_hd_url":"(.*?)"/)?.[1] || '') || '',
title: parse(data.match(/<meta\sname="description"\scontent="(.*?)"/)?.[1] || '') || '',
thumbnail: parse(data.match(/"preferred_thumbnail":{"image":{"uri":"(.*?)"/)?.[1] || '')
};
resolve(result);
}).catch(() => reject('Unable to fetch video information at this time.'));
});
}
// All-in-One Downloader
async function rebelaldwn(url) {
try {
const data = await _fetchapi('aio', url);
if (!data || data.status === false) {
return _errorResponse(data?.msg || 'Result Not Found! Check Your Url Now!');
}
if (Array.isArray(data.url)) {
return data.url.map(item => ({
developer: 'MD ARIFUL ISLAM ASIF',
Facebook: 'https://www.facebook.com/ARIF.THE.REBEL.233',
WhatsApp: 'wa.me/+880190560009',
platform: data.platform || 'unknown',
title: item.title || data.title || 'No Title',
url: item.url
}));
}
return {
developer: 'MD ARIFUL ISLAM ASIF',
Facebook: 'https://www.facebook.com/ARIF.THE.REBEL.233',
WhatsApp: 'wa.me/+880190560009',
platform: data.platform || 'unknown',
title: data.title || 'No Title',
url: data.url
};
} catch (error) {
return _errorResponse(error.message);
}
}
// Pinterest Downloader
async function rebelpindl(url) {
try {
if (!isURL(url)) throw new Error('Need Pinterest URL');
const headers = {
'User-Agent': generateUA(),
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8'
};
const { data } = await axios.get(`https://pinterestdownloader.io/frontendService/DownloaderService?url=${url}`, { headers });
const { medias = [], title } = data;
let highestQualityVideo = null;
let highestQualityImage = null;
medias.forEach(media => {
if (media.extension === 'mp4' && (!highestQualityVideo || media.quality > highestQualityVideo.quality)) {
highestQualityVideo = media;
} else if ((media.extension === 'jpg' || media.extension === 'png') &&
(!highestQualityImage || media.quality > highestQualityImage.quality)) {
highestQualityImage = media;
}
});
return {
developer: 'MD ARIFUL ISLAM ASIF',
Facebook: 'https://www.facebook.com/ARIF.THE.REBEL.233',
WhatsApp: 'wa.me/+880190560009',
platform: 'pinterest',
title: title || null,
thumbnail: highestQualityImage?.url || null,
video: highestQualityVideo?.url || null,
image: highestQualityImage?.url || null
};
} catch (error) {
return _errorResponse(error.message || 'Pinterest download failed');
}
}
// CapCut Downloader
async function rebelcapcutdl(url) {
try {
if (!url.includes('capcut.com')) return _errorResponse('Invalid CapCut URL!');
const { data } = await axios.get(url, { headers: { 'User-Agent': 'Mozilla/5.0' } });
const $ = cheerio.load(data);
let jsonData = null;
$('script').each((_, el) => {
const content = $(el).html();
if (content.includes('window._ROUTER_DATA')) {
jsonData = content.replace('window._ROUTER_DATA = ', '').trim();
}
});
const parsed = JSON.parse(jsonData);
const template = parsed?.loaderData?.['template-detail_$']?.templateDetail;
if (!template) throw new Error('Template data not found');
return {
developer: 'MD ARIFUL ISLAM ASIF',
Facebook: 'https://www.facebook.com/ARIF.THE.REBEL.233',
WhatsApp: 'wa.me/+880190560009',
status: true,
title: template.title,
description: template.desc,
thumbnail: template.coverUrl,
videoRatio: template.videoRatio,
duration: template.templateDuration,
play: template.playAmount,
likes: template.likeAmount,
usage: template.usageAmount,
created: template.createTime,
author: template.author
};
} catch (error) {
return _errorResponse(error.message || 'Something went wrong');
}
}
// Likee Downloader
async function rebellikeedl(url) {
try {
const headers = {
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
'user-agent': 'Mozilla/5.0',
'x-requested-with': 'XMLHttpRequest'
};
const payload = `id=${url}`;
const response = await axios.post('https://likeedownloader.com/process', payload, { headers });
const $ = cheerio.load(response.data.template);
const title = $('.infotext').text().trim() || 'No title';
const thumbnail = $('.img_thumb img').attr('src');
const withWatermark = $('.result-links-item').eq(0).find('a').attr('href');
const withoutWatermark = $('.result-links-item').eq(1).find('a').attr('href');
return {
developer: 'MD ARIFUL ISLAM ASIF',
Facebook: 'https://www.facebook.com/ARIF.THE.REBEL.233',
WhatsApp: 'wa.me/+880190560009',
status: 200,
platform: 'likee',
data: {
title,
thumbnail,
withWatermark: withWatermark || 'N/A',
withoutWatermark: withoutWatermark || 'N/A'
}
};
} catch {
return _errorResponse('Something went wrong');
}
}
// Export all
module.exports = {
rebeltiktokdl,
rebelinstadl,
rebeltwitter,
rebelyt,
rebelfbdown,
rebelaldwn,
rebelpindl,
rebelcapcutdl,
rebellikeedl
};