UNPKG

@lucasmod/modulo-torrent

Version:

Módulo para scraping de torrents, desenvolvido por @lucas_mod_domina.

67 lines (63 loc) 2.46 kB
//By: 𖧄 𝐋𝐔𝐂𝐀𝐒 𝐌𝐎𝐃 𝐃𝐎𝐌𝐈𝐍𝐀 𖧄 //Canal: https://whatsapp.com/channel/0029Va6riekH5JLwLUFI7P2B const axios = require('axios') const cheerio = require('cheerio') const { URL } = require('url') const getUserAgent = () => { return { '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' } } /** * Função para obter os detalhes de um filme a partir de sua URL. * * Esta função realiza uma requisição HTTP para a URL fornecida, faz o scraping do conteúdo da página, * e extrai informações detalhadas sobre o filme, como título, imagem, sinopse, avaliação IMDb, * elenco, links de download, entre outros. * * @param {string} movieUrl - A URL da página do filme para extrair os detalhes. * @returns {Object} - Objeto com o status da requisição e os detalhes do filme. * * @throws {Error} Se ocorrer um erro durante a requisição HTTP ou ao processar os dados da página. */ const scrapeMovieDetails = async (imputUrl) => { try { const resolvedUrl = new URL(imputUrl).href const { data } = await axios.get(resolvedUrl, { headers: getUserAgent() }) const $ = cheerio.load(data) const movie = {} movie.title = $('h1.title').text().trim() movie.url = resolvedUrl movie.imageUrl = $('.col-left img.img-fluid').attr('src') movie.audio = $('.col-left .audio').text().trim() movie.imdbRating = $('.col-left .imdb b').text().trim() movie.synopsis = $('.col-center .content p').first().text().trim() movie.country = $('.col-center ul.info li:contains("País de Origem")').text().replace('País de Origem', '').trim() movie.fileInfo = [] $('.col-left .info ul li').each((index, element) => { movie.fileInfo.push($(element).text().trim()) }) movie.downloadLinks = [] $('.links-down a').each((index, element) => { const link = $(element).attr('href') const text = $(element).text().trim() movie.downloadLinks.push({ text, link }) }) movie.cast = [] $('.col-right .cast ul li').each((index, element) => { const role = $(element).find('strong').text().trim() const name = $(element).find('a').text().trim() movie.cast.push({ role, name }) }) return { criador: '@lucas_mod_domina', status: true, resultados: movie } } catch (error) { console.error('Erro ao fazer scraping:', error.message) return { status: false, mensagem: error.message } } } module.exports = { detalhes: async (url) => { return await scrapeMovieDetails(url) } }