akiraa-scrape
Version:
Module & tools for bot whatsApp
254 lines (245 loc) • 7.6 kB
JavaScript
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,
};