UNPKG

akiraa-scrape

Version:

Module & tools for bot whatsApp

254 lines (245 loc) 7.6 kB
const yt = require("ytdl-core"); const yts = require("yt-search"); async function ytDonlodMp3(url) { return new Promise((resolve, reject) => { try { const id = yt.getVideoID(url); const yutub = yt .getInfo(`https://www.youtube.com/watch?v=${id}`) .then((data) => { let pormat = data.formats; let audio = []; for (let i = 0; i < pormat.length; i++) { if (pormat[i].mimeType == 'audio/webm; codecs="opus"') { let aud = pormat[i]; audio.push(aud.url); } } const title = data.player_response.microformat.playerMicroformatRenderer.title .simpleText; const thumb = data.player_response.microformat.playerMicroformatRenderer.thumbnail .thumbnails[0].url; const channel = data.player_response.microformat.playerMicroformatRenderer .ownerChannelName; const views = data.player_response.microformat.playerMicroformatRenderer .viewCount; const published = data.player_response.microformat.playerMicroformatRenderer .publishDate; const result = { title: title, thumb: thumb, channel: channel, published: published, views: views, url: audio[1], }; return result; }); resolve(yutub); } catch (error) { reject(error); } console.log(error); }); } async function ytDonlodMp4(url) { return new Promise((resolve, reject) => { try { const id = yt.getVideoID(url); const yutub = yt .getInfo(`https://www.youtube.com/watch?v=${id}`) .then((data) => { let pormat = data.formats; let video = []; for (let i = 0; i < pormat.length; i++) { if ( pormat[i].container == "mp4" && pormat[i].hasVideo == true && pormat[i].hasAudio == true ) { let vid = pormat[i]; video.push(vid.url); } } const title = data.player_response.microformat.playerMicroformatRenderer.title .simpleText; const thumb = data.player_response.microformat.playerMicroformatRenderer.thumbnail .thumbnails[0].url; const channel = data.player_response.microformat.playerMicroformatRenderer .ownerChannelName; const views = data.player_response.microformat.playerMicroformatRenderer .viewCount; const published = data.player_response.microformat.playerMicroformatRenderer .publishDate; const result = { title: title, thumb: thumb, channel: channel, published: published, views: views, url: video[0], }; return result; }); resolve(yutub); } catch (error) { reject(error); } console.log(error); }); } async function ytPlayMp3(query) { return new Promise((resolve, reject) => { try { const search = yts(query).then((data) => { const url = []; const pormat = data.all; for (let i = 0; i < pormat.length; i++) { if (pormat[i].type == "video") { let dapet = pormat[i]; url.push(dapet.url); } } const id = yt.getVideoID(url[0]); const yutub = yt .getInfo(`https://www.youtube.com/watch?v=${id}`) .then((data) => { let pormat = data.formats; let audio = []; let video = []; for (let i = 0; i < pormat.length; i++) { if (pormat[i].mimeType == 'audio/webm; codecs="opus"') { let aud = pormat[i]; audio.push(aud.url); } } const title = data.player_response.microformat.playerMicroformatRenderer.title .simpleText; const thumb = data.player_response.microformat.playerMicroformatRenderer .thumbnail.thumbnails[0].url; const channel = data.player_response.microformat.playerMicroformatRenderer .ownerChannelName; const views = data.player_response.microformat.playerMicroformatRenderer .viewCount; const published = data.player_response.microformat.playerMicroformatRenderer .publishDate; const result = { status: true, code: 200, creator: "Creator Bot Akira", title: title, thumb: thumb, channel: channel, published: published, views: views, url: audio[0], }; return result; }); return yutub; }); resolve(search); } catch (error) { reject(error); } console.log(error); }); } async function ytPlayMp4(query) { return new Promise((resolve, reject) => { try { const search = yts(query).then((data) => { const url = []; const pormat = data.all; for (let i = 0; i < pormat.length; i++) { if (pormat[i].type == "video") { let dapet = pormat[i]; url.push(dapet.url); } } const id = yt.getVideoID(url[0]); const yutub = yt .getInfo(`https://www.youtube.com/watch?v=${id}`) .then((data) => { let pormat = data.formats; let video = []; for (let i = 0; i < pormat.length; i++) { if ( pormat[i].container == "mp4" && pormat[i].hasVideo == true && pormat[i].hasAudio == true ) { let vid = pormat[i]; video.push(vid.url); } } const title = data.player_response.microformat.playerMicroformatRenderer.title .simpleText; const thumb = data.player_response.microformat.playerMicroformatRenderer .thumbnail.thumbnails[0].url; const channel = data.player_response.microformat.playerMicroformatRenderer .ownerChannelName; const views = data.player_response.microformat.playerMicroformatRenderer .viewCount; const published = data.player_response.microformat.playerMicroformatRenderer .publishDate; const result = { title: title, thumb: thumb, channel: channel, published: published, views: views, url: video[0], }; return result; }); return yutub; }); resolve(search); } catch (error) { reject(error); } console.log(error); }); } async function ytSearch(query) { return new Promise((resolve, reject) => { try { const cari = yts(query).then((data) => { res = data.all; return res; }); resolve(cari); } catch (error) { reject(error); } console.log(error); }); } module.exports = { ytDonlodMp3, ytDonlodMp4, ytPlayMp3, ytPlayMp4, ytSearch, };