Subtitle addon for Stremio that provides subtitles for TV series through the Gestdown API. Built with Vue.js 3 and Node.js for an exceptional user experience.
- ๐ฏ TV Series Only - Works exclusively with TV series through the Gestdown API
- ๐จ Modern Interface - Beautiful, responsive configuration page with dark theme
- โก Lightning Fast - Multi-level caching system for instant subtitle loading
- ๐ On-the-fly VTT Conversion - Subtitles are converted to VTT format internally with advanced, language-aware character encoding support.
- ๐ก๏ธ Reliable - Built with professional error handling and retry mechanisms
gestdown-subtitles/
โโโ backend/ # Node.js Express server
โ โโโ gestdown.js # Main subtitle logic
โ โโโ tmdb.js # TMDB metadata integration
โ โโโ index.js # Express server setup
โ โโโ manifest.json # Stremio addon manifest
โ โโโ languages.json # Supported languages
โ โโโ lib/
โ โโโ gestdownApi.js # Gestdown API client
โโโ frontend/ # Vue.js 3 configuration interface
โ โโโ src/
โ โ โโโ components/ # Vue components
โ โ โโโ views/ # Page views
โ โ โโโ stores/ # Pinia state management
โ โ โโโ router/ # Vue Router setup
โ โโโ public/ # Static assets
โ โโโ dist/ # Built frontend (production)
โโโ docker-compose.yaml # Docker Compose setup
โโโ Dockerfile # Multi-stage Docker build
โโโ .env # Environment configuration
-
Clone the repository:
git clone https://github.com/Dydhzo/gestdown-subtitles.git cd gestdown-subtitles -
Configure environment: Create a
.envfile in the root directory and add the following configuration:# The environment mode, 'production' or 'development' NODE_ENV=production # The port the server will run on. Change this if 64395 is in use. PORT=64395 # Your TMDB API key (required) TMDB_API=your_tmdb_api_key_here # The public-facing URL for the addon configuration. # For local Docker, this should be http://localhost:PORT CONFIG_URL=http://localhost:64395
Note: Make sure the
PORTinCONFIG_URLmatches thePORTvariable above. -
Start with Docker:
docker-compose up -d
-
Access the addon:
- The configuration URL is defined by
CONFIG_URLin your.envfile. By default, it is: http://localhost:64395/configure
- The configuration URL is defined by
For those who want to modify the code.
-
Install All Dependencies: From the root directory, this single command will install everything needed.
npm run install:all
-
Configure Environment for Development: Create a
.envfile in the root directory and set the mode todevelopment.NODE_ENV=development PORT=64395 TMDB_API=your_tmdb_api_key_here CONFIG_URL=http://localhost:64395
Note: The frontend dev server runs on port 3000 and will proxy requests to the backend on the
PORTspecified above. -
Start Both Development Servers: From the root directory, this single command starts both the backend and frontend with live-reloading.
npm run dev
| Variable | Description | Required | Default |
|---|---|---|---|
NODE_ENV |
Environment mode | No | production |
PORT |
Server port | No | 64395 (configurable in .env) |
TMDB_API |
TMDB API key | Yes | - |
CONFIG_URL |
Configuration URL | No | http://localhost:{PORT} (configurable in .env) |
- Visit TMDB
- Create a free account
- Go to Settings โ API
- Request an API key
- Add it to your
.envfile
- Start the addon server
- Visit the configuration page (e.g.,
http://localhost:64395/configure, depending on your.envfile). - Select your preferred subtitle language
- Click "Install to Stremio" - the addon will be automatically added
- Express.js - Web server framework
- Axios - HTTP client for API requests
- NodeCache - In-memory caching system
- Slugify - URL-friendly string conversion
- Dotenv - Environment variable management
- Vue.js 3 - Progressive JavaScript framework
- Tailwind CSS - Utility-first CSS framework
- Pinia - State management for Vue
- Vue Router - Official router for Vue.js
- Vite - Fast build tool and dev server
| Endpoint | Method | Description |
|---|---|---|
/configure |
GET | Configuration interface |
/manifest.json |
GET | Default manifest |
/:config/manifest.json |
GET | Configured manifest |
/:config/subtitles/:type/:id.json |
GET | Subtitle search |
/languages.json |
GET | Available languages |
/sub.vtt |
GET | On-the-fly VTT conversion |
- User selects a series in Stremio
- Stremio requests subtitles using IMDB ID
- TMDB converts IMDB ID to series title
- Gestdown API searches for the series by title
- Subtitles are retrieved for the specific episode
- A special URL is generated, pointing back to the addon itself.
- The addon converts the subtitle to VTT format on-the-fly, intelligently handling character encoding based on the subtitle's language.
- Caching system stores results for faster future requests
# Build and start
docker-compose up -d
# View logs
docker-compose logs -f
# Stop
docker-compose down# docker-compose.override.yml
services:
gestdown-subtitles:
image: dydhzo/gestdown-subtitles:latest
container_name: gestdown-subtitles
ports:
- "64395:64395" # Example: Map container port 64395 to host port 64395
environment:
- NODE_ENV=production
- PORT=64395 # Tell the container to run on port 64395
- TMDB_API=your_tmdb_api_key_here
- CONFIG_URL=https://your-domain.com
restart: unless-stopped- Backend: Express.js server handling Stremio addon protocol
- Frontend: Vue.js 3 SPA for configuration interface
- Docker: Multi-stage build for optimized production deployment
All scripts are meant to be run from the project's root directory.
| Script | Description |
|---|---|
npm run dev |
Starts both backend and frontend in development mode. |
npm start |
Starts the backend server for production use. |
npm run build |
Builds the frontend application for production. |
npm run install:all |
Installs all dependencies for the root, backend, and frontend. |
Addon not appearing in Stremio:
- Check if the server is running on the correct port
- Verify the manifest URL is accessible
- Ensure TMDB API key is valid
No subtitles found:
- Verify the series exists on Addic7ed
- Check if the language is supported
- Try different language variations
Docker issues:
- Ensure Docker and Docker Compose are installed
- Check if the port specified in your
.envfile is available on your host machine. - Verify all required environment variables are set correctly in the
.envfile.
- Gestdown API - For providing the subtitle data
- stremio-addic7ed - The boilerplate and structure of this addon were based on this project.
- sub2vtt - Thanks to dexter21767 for the original project
- Addic7ed - For the original subtitle database
- TMDB - For metadata and series information
- Stremio - For the amazing media center platform