abot-scraper
Version:
scraper random for downloader and searching
91 lines (77 loc) • 2.73 kB
JavaScript
const axios = require("axios");
const cheerio = require("cheerio");
function youtubeDownloader(url) {
return new Promise((resolve, reject) => {
let configd = {
url: url,
q_auto: 0,
ajax: 1,
lang: "en",
};
let headerss = {
"user-agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
};
axios
.post(
"https://yt1s.net/ajax?retry=undefined&platform=youtube",
new URLSearchParams(Object.entries(configd)),
{ headers: headerss }
)
.then(({ data }) => {
console.log(data);
const $ = cheerio.load(data.result);
// Extract title
const title = $(".caption b").text().trim();
const thumbnailUrl = $(".thumbnail.cover img").attr("src");
// Extract download links for 480p, 720p, 1080p
const downloadLinks = {
"480p": $('a[data-fquality="480p"]').attr("href"),
"720p": $('a[data-fquality="720p"]').attr("href"),
"1080p": $('a[data-fquality="1080p"]').attr("href"),
};
// Extract MP3 convert token
const mp3ConvertElement = $("#convert-mp3 a");
if (!mp3ConvertElement.length) {
throw new Error("Elemen konversi MP3 tidak ditemukan");
}
const hrefAttr = mp3ConvertElement.attr("href");
if (!hrefAttr) {
throw new Error("Atribut href tidak ditemukan");
}
console.log(hrefAttr);
// Extract token from href attribute
const mp3ConvertTokenMatch = hrefAttr.match(
/mp3_convert_task\('(\d+)',\s*'([^']+)'\)/
);
if (!mp3ConvertTokenMatch || !mp3ConvertTokenMatch[2]) {
throw new Error("Token konversi MP3 tidak ditemukan");
}
const mp3ConvertToken = mp3ConvertTokenMatch[2];
// Convert MP3
axios
.get(
`https://api.fabdl.com/youtube/mp3-convert-task?token=${mp3ConvertToken}`
)
.then(({ data: mp3Data }) => {
const mp3DownloadUrl = `https://api.fabdl.com${mp3Data.result.download_url}`;
resolve({
creator: global.creator,
status: 200,
result: {
title: title,
thumbnail: thumbnailUrl,
downloadLinks: downloadLinks,
mp3DownloadUrl: mp3DownloadUrl,
},
});
})
.catch(reject);
})
.catch(reject);
});
}
// Contoh penggunaan
youtubeDownloader("https://www.youtube.com/watch?v=8JW6qzPCkE8")
.then((result) => console.log(result))
.catch((error) => console.error(error));