@lucasmod/modulo-torrent
Version:
Módulo para scraping de torrents, desenvolvido por @lucas_mod_domina.
67 lines (63 loc) • 2.46 kB
JavaScript
//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)
}
}