[![-----------------------------------------------------](https://raw.githubusercontent.com/andreasbm/readme/master/assets/lines/colored.png)](#table-of-contents)

# Módulo Torrent 🚀

![Banner Torrent](https://media.giphy.com/media/26xBwdIuRJiAIqHwA/giphy.gif)

---

[![npm version](https://img.shields.io/npm/v/modulo-torrent.svg)](https://www.npmjs.com/package/modulo-torrent)
[![Build Status](https://img.shields.io/travis/username/modulo-torrent.svg)](https://travis-ci.org/username/modulo-torrent)
[![License: ISC](https://img.shields.io/badge/License-ISC-blue.svg)](LICENSE)

---------

<details open align="center">
<summary><b>↓ Total de visitantes ↓</b></summary>
<br>
<a href="https://www.instagram.com/lucas_mod_domina"><img alt="Cute Count" src="https://count.getloli.com/get/@NeofetchNpc?theme=rule34"/></a>
</details>
</div>

---------

> **Módulo Torrent** é uma biblioteca Node.js que facilita o acesso a informações de torrents do site Limontorrents, permitindo a extração de dados como destaques, os últimos adicionados e navegação paginada.
> Explore a documentação abaixo e descubra como integrar este módulo de forma simples e intuitiva! 😃

---

## 📌 Recursos

> ✨ *Funcionalidades Incríveis:*

- **getDestaques**: Recupera os torrents em destaque.
- **getUltimosAdicionados**: Lista os torrents mais recentes adicionados.
- **getPagination**: Permite navegar pelas páginas dos resultados.
- **search**: Realiza buscas por filmes ou séries.
- **getMovieDetails**: Obtém detalhes de um filme ou série.
- **downloadTorrent**: Faz o download de torrents com feedback de progresso.
- **getTorrentStream**: Inicia o streaming de um torrent com progresso dinâmico.

---

## ⚙️ Instalação
---
Para instalar o módulo, utilize o npm:
---

```bash
npm install @lucasmod/modulo-torrent
```
---

## 🚀 Modo de Uso
---
### Exemplo Básico

```js
const torrent = require('@lucasmod/modulo-torrent')

// Usando getDestaques
torrent.getDestaques((result) => {
console.log(JSON.stringify(result, null, 2))
})
```
---

```js
// Usando getUltimosAdicionados
torrent.getUltimosAdicionados((result) => {
console.log(JSON.stringify(result, null, 2))
})
```
---

```js
// Usando getPagination para a página 2
torrent.getPagination((result) => {
console.log(JSON.stringify(result, null, 2))
}, 2)
```
---

### Exemplos Avançados

```js
const torrent = require('@lucasmod/modulo-torrent')

// Usando getDestaques
torrent.getDestaques((result) => {
if (result.status) {
console.log('Destaques:', JSON.stringify(result, null, 2))
} else {
console.error('Erro ao buscar destaques:', result.mensagem)
}
})
```
---

```js
// Usando getUltimosAdicionados
torrent.getUltimosAdicionados((result) => {
if (result.status) {
console.log('Últimos Adicionados:', JSON.stringify(result, null, 2))
} else {
console.error('Erro ao buscar últimos adicionados:', result.mensagem)
}
})
```
---

```js
// Usando getPagination para a página 2
torrent.getPagination((result) => {
if (result.status) {
console.log('Página 2:', JSON.stringify(result, null, 2))
} else {
console.error('Erro ao buscar a página 2:', result.mensagem)
}
}, 2)
```
---

```js
// Usando search para buscar filmes ou séries
const searchQuery = 'avengers'

torrent.search(searchQuery)
.then(result => {
if (result.status) {
console.log(`Resultados para "${searchQuery}":`, JSON.stringify(result, null, 2))
} else {
console.error(`Erro ao buscar por "${searchQuery}":`, result.mensagem)
}
})
.catch(error => {
console.error('Erro ao realizar a busca:', error.message)
})
```
---

```js
// Usando getMovieDetails para obter detalhes de um filme ou série
const movieUrl = 'https://limontorrents.com/os-vingadores-the-avengers/'

torrent.getMovieDetails(movieUrl)
.then(result => {
console.log('Detalhes do Filme ou Série:', JSON.stringify(result, null, 2))
})
.catch(error => {
console.error('Erro ao buscar detalhes do filme ou série:', error.message)
})
```
---

```js
// Usando download para baixar um torrent
const magnetURI = 'magnet:?xt=urn:btih:D430C1BF03CCEC2375E7950853DFFABDF53C366B&dn=The.Avengers.Os.Vingadores.2012.720p-WOLVERDONFILMES.COM&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Ftracker.publicbt.com%3A80&tr=udp%3A%2F%2Ftracker.istole.it%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.ccc.de%3A80&tr=udp%3A%2F%2Fopen.demonii.com%3A1337'

torrent.downloadTorrent(magnetURI)
.then(result => {
console.log('Download concluído:')
console.log('Arquivo salvo em:', result.filePath)
// Escutando o progresso (caso o evento ainda esteja sendo emitido)
result.progressEmitter.on('progress', percent => {
console.log(`Progresso: ${percent}%`)
})
})
.catch(error => {
console.error('Erro ao fazer o download:', error.message)
})
```
---

```js
// Usando stream para streaming de um torrent
torrent.streamTorrent(magnetURI)
.then(result => {
console.log('Streaming iniciado:')
// Exemplo: lendo alguns dados do stream
result.stream.on('data', chunk => {
console.log(`Recebido chunk com ${chunk.length} bytes`)
})
result.progressEmitter.on('progress', percent => {
console.log(`Progresso do streaming: ${percent}%`)
})
})
.catch(error => {
console.error('Erro ao iniciar streaming:', error.message)
})
```
---

```js
// Usando download de maneira mais avançada para baixar um torrent
async function advancedDownload() {
try {
const result = await torrent.downloadTorrent(magnetURI)
console.log('Download iniciado com progresso dinâmico:')
// Exibe o progresso em tempo real
result.progressEmitter.on('progress', percent => {
process.stdout.write(`\rProgresso: ${percent}%`)
})
// Quando o download for concluído, exibe informações finais
console.log('\nDownload concluído:', result.filePath)
// Realiza a limpeza do engine
result.cleanup()
} catch (error) {
console.error('Erro:', error.message)
}
}
advancedDownload()
```
---

### Exemplos Express

```js
// Integração no Express
// Endpoint para streaming do torrent
app.get('/stream', async (req, res) => {
const magnetURI = 'magnet:?xt=urn:btih:D430C1BF03CCEC2375E7950853DFFABDF53C366B&dn=The.Avengers.Os.Vingadores.2012.720p-WOLVERDONFILMES.COM&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Ftracker.publicbt.com%3A80&tr=udp%3A%2F%2Ftracker.istole.it%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.ccc.de%3A80&tr=udp%3A%2F%2Fopen.demonii.com%3A1337'
try {
// Recupera o header de range, se presente
const range = req.headers.range || ''
const result = await torrent.streamTorrent(magnetURI, 0, range)
// Configura os cabeçalhos de resposta
res.writeHead(206, result.headers)
// Pipe do stream do torrent para a resposta HTTP
result.stream.pipe(res)
// Exibe o progresso no console
result.progressEmitter.on('progress', percent => {
console.log(`Streaming Progresso: ${percent}%`)
})
// Limpa o engine se o cliente encerrar a conexão
req.on('close', () => {
result.cleanup()
})
} catch (error) {
res.status(500).send(`Erro no streaming: ${error.message}`)
}
})
```
---

## Redes Sociais

Conecte-se comigo:

[![GitHub](https://img.shields.io/badge/GitHub-000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/Otakump4)  
[![YouTube](https://img.shields.io/badge/YouTube-FF0000?style=for-the-badge&logo=youtube&logoColor=white)](https://youtube.com/@Otaku.mp4l)  
[![WhatsApp](https://img.shields.io/badge/WhatsApp-25D366?style=for-the-badge&logo=whatsapp&logoColor=white)](https://wa.me/559491569380)  
[![Instagram](https://img.shields.io/badge/Instagram-E4405F?style=for-the-badge&logo=instagram&logoColor=white)](https://instagram.com/lucas_mod_domina)  
[![Telegram](https://img.shields.io/badge/Telegram-0088CC?style=for-the-badge&logo=telegram&logoColor=white)](https://t.me/LUCAS_MOD_DOMINA)

---

Copyright (c) 2025 Lucas Mod Domina