UNPKG

abot-scraper

Version:

scraper random for downloader and searching

91 lines (77 loc) 2.73 kB
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));