xvdlvoid
Version:
Obter informações de um vídeo no xvideos.
43 lines (39 loc) • 1.59 kB
JavaScript
const axios = require('axios');
const cheerio = require('cheerio');
function formatarData(dataISO) {
const data = new Date(dataISO);
const dia = String(data.getDate()).padStart(2, '0');
const mes = String(data.getMonth() + 1).padStart(2, '0');
const ano = data.getFullYear();
const hora = String(data.getHours()).padStart(2, '0');
const min = String(data.getMinutes()).padStart(2, '0');
return `${dia}/${mes}/${ano} ${hora}:${min}`;
}
function formatarDuracao(durationISO) {
const match = durationISO.match(/PT(\d+H)?(\d+M)?(\d+S)?/);
const horas = match[1] ? match[1].replace('H', '').padStart(2, '0') : '00';
const minutos = match[2] ? match[2].replace('M', '').padStart(2, '0') : '00';
const segundos = match[3] ? match[3].replace('S', '').padStart(2, '0') : '00';
return (horas !== '00' ? `${horas}:` : '') + `${minutos}:${segundos}`;
}
async function xvideosDownload(url) {
try {
const { data } = await axios.get(url);
const $ = cheerio.load(data);
const json = $('script[type="application/ld+json"]').html();
if (!json) throw new Error("Não foi possível encontrar dados do vídeo");
const video = JSON.parse(json);
return {
criador_api: 'mauri (@waymauri)',
nomeVideo: video.name,
descricao: video.description,
thumbnail: video.thumbnailUrl[0],
dataUpload: formatarData(video.uploadDate),
duracao: formatarDuracao(video.duration),
linkDownload: video.contentUrl
};
} catch (err) {
throw new Error(`Erro ao buscar vídeo: ${err.message}`);
}
}
module.exports = xvideosDownload;