UNPKG

xvdlvoid

Version:

Obter informações de um vídeo no xvideos.

43 lines (39 loc) 1.59 kB
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;