decode-imrerezz
Version:
Module API Decode IM-Rerezz
214 lines (189 loc) • 7.38 kB
JavaScript
const axios = require('axios');
const tiktokdl = async (url, apikey) => {
if (!url || !apikey) throw new Error('URL dan API key wajib');
const apiUrl = `https://www.decode.im-rerezz.xyz/api/dl/tiktokv2?url=${encodeURIComponent(url)}&apikey=${apikey}`;
try {
const { data } = await axios.get(apiUrl);
if (!data.status) {
throw new Error('Gagal mengambil data dari API');
}
return data.result;
} catch (error) {
throw new Error(`Error fetching TikTok data: ${error.message}`);
}
};
const ytmp3 = async (url, apikey) => {
if (!url || !apikey) throw new Error('URL dan API key wajib');
try {
const apiUrl = `https://www.decode.im-rerezz.xyz/api/dl/ytmp3?url=${encodeURIComponent(url)}&apikey=${apikey}`;
const res = await axios.get(apiUrl);
const data = res.data;
if (!data.status) {
throw new Error('❌ Gagal mendapatkan data.');
}
return {
title: data.data.title,
uploader: data.data.uploader,
duration: data.data.duration,
thumbnail: data.data.thumbnail,
quality: data.data.quality,
downloadLink: data.data.download
};
} catch (err) {
throw new Error('⚠️ Terjadi kesalahan saat mengambil data: ' + err.message);
}
};
const ytmp4 = async (url, qual, apikey) => {
if (!url || !apikey || !qual) throw new Error('URL, API key, dan kualitas video wajib');
try {
const apiUrl = `https://www.decode.im-rerezz.xyz/api/dl/ytmp4?url=${encodeURIComponent(url)}&qual=${qual}&apikey=${apikey}`;
const res = await axios.get(apiUrl);
const data = res.data;
if (!data.status) {
throw new Error('❌ Gagal mendapatkan data.');
}
return {
title: data.data.title,
uploader: data.data.uploader,
duration: data.data.duration,
thumbnail: data.data.thumbnail,
quality: data.data.quality,
downloadLink: data.data.download
};
} catch (err) {
throw new Error('⚠️ Terjadi kesalahan saat mengambil data: ' + err.message);
}
};
const igdl = async (url, apikey) => {
if (!url || !apikey) throw new Error('URL dan API key wajib');
try {
const apiUrl = `https://www.decode.im-rerezz.xyz/api/dl/instagram?url=${encodeURIComponent(url)}&apikey=${apikey}`;
const res = await axios.get(apiUrl);
const data = res.data;
if (!data.success) {
throw new Error('❌ Gagal mendapatkan data Instagram.');
}
const downloads = data.downloads.map(download => ({
title: download.title,
url: download.url
}));
return downloads;
} catch (err) {
throw new Error('⚠️ Terjadi kesalahan saat mengambil data Instagram: ' + err.message);
}
};
const fbdl = async (url, apikey) => {
if (!url || !apikey) throw new Error('URL dan API key wajib');
try {
const apiUrl = `https://www.decode.im-rerezz.xyz/api/dl/facebook?url=${encodeURIComponent(url)}&apikey=${apikey}`;
const res = await axios.get(apiUrl);
const data = res.data;
if (!data.status) {
throw new Error('❌ Gagal mendapatkan data dari Facebook.');
}
return {
duration: data.result.duration,
video: data.result.result.map(item => ({
quality: item.quality,
downloadLink: item.url
}))
};
} catch (err) {
throw new Error('⚠️ Terjadi kesalahan saat mengambil data: ' + err.message);
}
};
const capcutdl = async (url, apikey) => {
if (!url || !apikey) throw new Error('URL dan API key wajib diisi');
try {
const apiUrl = `https://www.decode.im-rerezz.xyz/api/dl/capcut?url=${encodeURIComponent(url)}&apikey=${apikey}`;
const res = await axios.get(apiUrl);
const data = res.data;
if (data.status !== 'ok') {
throw new Error('❌ Gagal mengambil data dari CapCut.');
}
return {
title: data.data.title,
date: data.data.date,
usage: data.data.pengguna,
likes: data.data.likes,
author: {
name: data.data.author.name,
avatar: data.data.author.avatarUrl
},
videoUrl: data.data.videoUrl,
posterUrl: data.data.posterUrl
};
} catch (err) {
throw new Error('⚠️ Terjadi kesalahan saat mengambil data CapCut: ' + err.message);
}
};
const mfdl = async (url, apikey) => {
if (!url || !apikey) throw new Error('URL dan API key wajib diisi');
try {
const apiUrl = `https://www.decode.im-rerezz.xyz/api/dl/mediafirev2?url=${encodeURIComponent(url)}&apikey=${apikey}`;
const res = await axios.get(apiUrl);
const data = res.data;
if (!data.success || !data.data || data.data.length === 0) {
throw new Error('❌ Gagal mengambil data dari MediaFire.');
}
const file = data.data[0];
return {
name: file.nama,
mime: file.mime,
size: file.size,
sizeInKB: file.sizeB,
downloadLink: file.link
};
} catch (err) {
throw new Error('⚠️ Terjadi kesalahan saat mengambil data MediaFire: ' + err.message);
}
};
const gdrive = async (url, apikey) => {
if (!url || !apikey) throw new Error('URL dan API key wajib diisi');
try {
const apiUrl = `https://www.decode.im-rerezz.xyz/api/dl/gdrive?url=${encodeURIComponent(url)}&apikey=${apikey}`;
const res = await axios.get(apiUrl);
const data = res.data;
if (!data.status) {
throw new Error('❌ Gagal mengambil data dari Google Drive.');
}
return {
fileName: data.fileName,
fileSize: data.fileSize,
mimeType: data.mimetype,
downloadUrl: data.downloadUrl
};
} catch (err) {
throw new Error('⚠️ Terjadi kesalahan saat mengambil data Google Drive: ' + err.message);
}
};
const gitclone = async (url, apikey) => {
if (!url || !apikey) throw new Error('URL dan API key wajib diisi');
try {
const apiUrl = `https://www.decode.im-rerezz.xyz/api/dl/gitclone?url=${encodeURIComponent(url)}&apikey=${apikey}`;
const res = await axios.get(apiUrl);
const data = res.data;
if (!Array.isArray(data) || !data[0]?.status) {
throw new Error('❌ Gagal mengambil data dari GitHub.');
}
const response = data[0].response;
return {
username: response.username,
repository: response.repositories,
downloadUrl: response.downloadUrl
};
} catch (err) {
throw new Error('⚠️ Terjadi kesalahan saat mengambil data GitHub: ' + err.message);
}
};
module.exports = {
tiktokdl,
ytmp3,
ytmp4,
igdl,
fbdl,
capcutdl,
mfdl,
gdrive,
gitclone
};