Skip to content

Latest commit

 

History

History
190 lines (155 loc) · 6.02 KB

File metadata and controls

190 lines (155 loc) · 6.02 KB

📁 Estructura del Proyecto para Vercel

torrentio-scraper/
│
├── addon/                          # 🎯 Core del addon de Stremio
│   ├── serverless.js              # Router principal con todas las rutas
│   ├── addon.js                   # Lógica del addon (streams, catalogs)
│   ├── index.js                   # Servidor Express para desarrollo local
│   ├── package.json               # Dependencias del addon
│   │
│   ├── lib/                       # Librerías del addon
│   │   ├── manifest.js           # ⭐ Genera manifest.json dinámicamente
│   │   ├── configuration.js       # Parseo de configuraciones
│   │   ├── cache.js              # Sistema de caché
│   │   ├── filter.js             # Filtros de streams
│   │   ├── sort.js               # Ordenamiento de streams
│   │   └── ...
│   │
│   ├── moch/                      # Integración con servicios debrid
│   │   ├── realdebrid.js
│   │   ├── alldebrid.js
│   │   ├── premiumize.js
│   │   └── ...
│   │
│   └── static/                    # Archivos estáticos
│       ├── images/
│       │   ├── background_v1.jpg
│       │   └── logo_v1.png
│       └── videos/
│           └── *.mp4             # Videos de error/estado
│
├── api/                           # 🚀 Serverless Functions de Vercel
│   └── index.js                  # Handler que importa addon/serverless.js
│
├── public/                        # 📦 Archivos públicos servidos por Vercel
│   ├── images/                   # Copia de addon/static/images
│   └── videos/                   # Copia de addon/static/videos
│
├── vercel.json                    # ⚙️ Configuración de Vercel
├── package.json                   # Scripts y metadata del proyecto
│
├── README.md                      # Documentación principal
├── DEPLOYMENT.md                  # Guía de deployment
├── STREMIO.md                     # Explicación del manifest de Stremio
└── TESTING.md                     # Guía de testing

🔄 Flujo de Requests en Vercel

Usuario/Stremio
    ↓
https://tu-proyecto.vercel.app/manifest.json
    ↓
Vercel Router (vercel.json)
    ↓
api/index.js (Serverless Function)
    ↓
addon/serverless.js (Router)
    ↓
addon/lib/manifest.js (Genera manifest dinámicamente)
    ↓
JSON Response con manifest

📋 Rutas Principales

Rutas de Configuración

  • GET / → Redirect a /configure
  • GET /configure → Página de configuración HTML
  • GET /:config/configure → Página con configuración específica

Rutas del Addon

  • GET /manifest.json → Manifest por defecto
  • GET /:config/manifest.json → Manifest con configuración

Rutas de Streams

  • GET /:config/stream/:type/:id.json → Streams para contenido
    • Ejemplo: /stream/movie/tt0111161.json
    • Ejemplo: /stream/series/tt0903747:1:1.json

Rutas de Debrid

  • GET /:config/catalog/:id/skip=:n.json → Catálogo de debrid
  • GET /:config/meta/:type/:id.json → Metadata de debrid
  • GET /resolve/:moch/:apiKey/:hash/... → Resolver link de debrid

Archivos Estáticos

  • GET /images/* → Logo, background, etc.
  • GET /videos/* → Videos de error/estado

🔑 Configuración (:config parameter)

El parámetro de configuración es una string con opciones separadas por |:

realdebrid=API_KEY|language=spanish|qualityfilter=1080p

Ejemplos de URLs Completas

1. Sin configuración (por defecto):

https://tu-proyecto.vercel.app/manifest.json

2. Con RealDebrid:

https://tu-proyecto.vercel.app/realdebrid=abc123/manifest.json

3. Con múltiples opciones:

https://tu-proyecto.vercel.app/realdebrid=abc123|language=spanish|qualityfilter=1080p/manifest.json

🎯 Archivos Clave para Vercel

1. vercel.json

Configura cómo Vercel maneja las requests:

  • Enruta todo a api/index.js
  • Configura memoria y timeout
  • Los archivos en public/ se sirven automáticamente

2. api/index.js

Serverless function que:

  • Importa addon/serverless.js
  • Actúa como proxy entre Vercel y el addon

3. addon/serverless.js

Router principal que:

  • Define todas las rutas del addon
  • Maneja requests y responses
  • Incluye rate limiting

4. addon/lib/manifest.js

Genera el manifest dinámicamente:

  • Lee la configuración del usuario
  • Construye el objeto manifest
  • Incluye recursos, catálogos, tipos, etc.

⚡ Diferencias con Deployment Tradicional

Tradicional (index.js con Express)

const app = express();
app.use(serverless);
app.listen(7000);

Vercel (Serverless)

export default function (req, res) {
  serverless(req, res);
}

🔧 Variables de Entorno

Configura en el dashboard de Vercel:

Variable Propósito Requerida
MONGODB_URI Caché de streams Opcional
POSTGRESQL_URI Base de datos de torrents Opcional*
METRICS_USER Usuario para /swagger-stats Opcional
METRICS_PASSWORD Password para métricas Opcional

*Nota: Necesitarás una base de datos con torrents scrapeados para que el addon devuelva streams reales.

📝 Notas Importantes

  1. No hay manifest.json estático: El manifest se genera en tiempo de ejecución
  2. Archivos estáticos: Deben estar en public/ para que Vercel los sirva
  3. Timeout: 10 segundos en Free tier, considera Vercel Pro si necesitas más
  4. Base de datos: Sin ella, el addon no devolverá streams reales
  5. Rate limiting: Configurado en serverless.js (300 req/hora por IP)

🚀 Ready to Deploy

Con esta estructura, tu proyecto está listo para:

  • ✅ Desplegarse en Vercel
  • ✅ Generar manifests dinámicos
  • ✅ Servir archivos estáticos
  • ✅ Manejar todas las rutas de Stremio
  • ✅ Integrarse con servicios debrid

¡Solo falta conectar una base de datos con torrents scrapeados!