|
|
const axios = require('axios'); |
|
|
const cheerio = require('cheerio'); |
|
|
|
|
|
async function yt(url, format) { |
|
|
const headers = { |
|
|
"accept": "*/*", |
|
|
"accept-language": "id-ID,id;q=0.9,en-US;q=0.8,en;q=0.7", |
|
|
"sec-ch-ua": "\"Not A(Brand\";v=\"8\", \"Chromium\";v=\"132\"", |
|
|
"sec-ch-ua-mobile": "?1", |
|
|
"sec-ch-ua-platform": "\"Android\"", |
|
|
"sec-fetch-dest": "empty", |
|
|
"sec-fetch-mode": "cors", |
|
|
"sec-fetch-site": "cross-site", |
|
|
"Referer": "https://id.ytmp3.mobi/", |
|
|
"Referrer-Policy": "strict-origin-when-cross-origin" |
|
|
} |
|
|
|
|
|
const initial = await fetch(`https://d.ymcdn.org/api/v1/init?p=y&23=1llum1n471&_=${Math.random()}`, {headers}); |
|
|
format = format || 'mp3'; |
|
|
const init = await initial.json(); |
|
|
console.log(init) |
|
|
|
|
|
const id = url.match(/(?:youtu\.be\/|youtube\.com\/(?:.*v=|.*\/|.*embed\/))([^&?/]+)/)?.[1]; |
|
|
let convertURL = init.convertURL + `&v=${id}&f=${format}&_=${Math.random()}`; |
|
|
|
|
|
|
|
|
const converts = await fetch(convertURL, {headers}); |
|
|
const convert = await converts.json(); |
|
|
|
|
|
|
|
|
let info = {}; |
|
|
for (let i = 0; i < 3; i++ ){ |
|
|
let j = await fetch(convert.progressURL, {headers}); |
|
|
info = await j.json(); |
|
|
console.log(info); |
|
|
if (info.progress == 3) break; |
|
|
} |
|
|
|
|
|
return { url: convert.downloadURL }; |
|
|
}; |
|
|
|
|
|
async function tiktok(url) { |
|
|
const { data } = await axios.get(`https://www.tikwm.com/api?url=${url}&hd=1`); |
|
|
if(!data.status !== 0) return { status: false, r: 'error' }; |
|
|
return { status: true, url: data.data.play, hd: data.data.hdplay, audio: data.data.music_info.play }; |
|
|
}; |
|
|
|
|
|
async function instagram(url) { |
|
|
const { data } = await axios.post( |
|
|
'https://yt1s.io/api/ajaxSearch', |
|
|
new URLSearchParams({ |
|
|
p: 'home', |
|
|
q: url, |
|
|
w: '', |
|
|
lang: 'en' |
|
|
}), |
|
|
{ |
|
|
headers: { |
|
|
'User-Agent': 'Postify/1.0.0', |
|
|
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', |
|
|
'Accept': 'application/json, text/plain, */*', |
|
|
'Origin': 'https://yt1s.io', |
|
|
'Referer': 'https://yt1s.io/' |
|
|
} |
|
|
} |
|
|
) |
|
|
|
|
|
const $ = cheerio.load(data.data) |
|
|
const rres = []; |
|
|
$('a.abutton.is-success.is-fullwidth.btn-premium') |
|
|
.map((_, el) => { |
|
|
rres.push($(el).attr('href')); |
|
|
}) |
|
|
.get() |
|
|
return { url: rres } |
|
|
} |
|
|
|
|
|
async function threads(url) { |
|
|
try { |
|
|
const apiUrl = `https://snapthreads.net/api/download?url=${encodeURIComponent(url)}`; |
|
|
|
|
|
const response = await axios.get(apiUrl, { |
|
|
headers: { |
|
|
"User-Agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Mobile Safari/537.36", |
|
|
"Referer": "https://snapthreads.net/id", |
|
|
"Accept": "*/*", |
|
|
"X-Requested-With": "XMLHttpRequest" |
|
|
} |
|
|
}); |
|
|
if (response.data && response.data.directLink) { |
|
|
return { |
|
|
success: true, |
|
|
url: response.data.directLink |
|
|
}; |
|
|
} else { |
|
|
return { |
|
|
success: false, |
|
|
r: 'cant find download link' |
|
|
}; |
|
|
} |
|
|
} catch (error) { |
|
|
console.error("Error:", error.response ? error.response.data : error.message); |
|
|
return { |
|
|
success: false, |
|
|
r: error.response ? error.response.data : error.message |
|
|
}; |
|
|
} |
|
|
} |
|
|
|
|
|
async function twitter(url) { |
|
|
try { |
|
|
const formData = new URLSearchParams(); |
|
|
formData.append("q", url); |
|
|
formData.append("lang", "id"); |
|
|
formData.append("cftoken", "JWT.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpcCI6IjE4Mi4xLjEzNS4yMzgiLCJ1cmwiOiJodHRwczovL3guY29tL2dhbGFzYW5zL3N0YXR1cy8xOTAxMTI5MDYyOTU1MDE2Mzk3P3Q9VTgzM0JmSExpUmRYM0NSUDVGOUhrZyZzPTE5IiwibmJmIjoxNzQyMzA0MzI2LCJleHAiOjE3NDIzMDQ2MjYsImlhdCI6MTc0MjMwNDMyNn0.h0GMNpNikiYqJgdhEEA2NN023_5fq5m7Scn31aMqYOo"); |
|
|
const headers = { |
|
|
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", |
|
|
"Accept": "*/*", |
|
|
"X-Requested-With": "XMLHttpRequest", |
|
|
"User-Agent": |
|
|
"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Mobile Safari/537.36", |
|
|
"Referer": "https://x2twitter.com/id", |
|
|
}; |
|
|
const response = await axios.post( |
|
|
"https://x2twitter.com/api/ajaxSearch", |
|
|
formData, |
|
|
{ headers } |
|
|
); |
|
|
if (response.data.status !== "ok") { |
|
|
throw new Error("Gagal mengambil data dari server."); |
|
|
} |
|
|
|
|
|
const html = response.data.data; |
|
|
const $ = cheerio?.load(html); |
|
|
let results = []; |
|
|
$(".dl-action a").each((_, el) => { |
|
|
const type = $(el).text().trim(); |
|
|
const downloadUrl = $(el).attr("href"); |
|
|
if (downloadUrl && downloadUrl !== "#") { |
|
|
results.push({ type, url: downloadUrl }); |
|
|
} |
|
|
}); |
|
|
|
|
|
return { |
|
|
success: results.length > 0, |
|
|
url: results |
|
|
}; |
|
|
} catch (error) { |
|
|
return { success: false, r: error.message }; |
|
|
} |
|
|
} |
|
|
|
|
|
module.exports = { yt, tiktok, instagram, threads, twitter }; |