A lightweight JavaScript SDK for The Movie Database (TMDB) REST API. This SDK provides a simple and intuitive way to interact with TMDB's API endpoints.
npm install @elselab-io/node-tmdb-sdk
import TMDB from '@elselab-io/node-tmdb-sdk';
// Initialize the SDK with your API key
const tmdb = new TMDB('your-api-key');
// Get movie details
const movie = await tmdb.movie.getDetails('550'); // Fight Club
console.log(movie.title); // "Fight Club"
- 📱 Modern JavaScript (ESM) - Built with modern ES modules
- 🔄 Promise-based API - Clean async/await support throughout
- 🎯 Clean and intuitive interface - Simple and easy to use
- 🛠️ Built with Axios - Reliable HTTP communication
- 🛡️ Comprehensive error handling - Robust error management
- 💾 Flexible caching system - Support for file-based and Redis caching
Check out the examples
directory for more detailed usage examples. Here's a quick example showing how to get movie details with additional data:
const movieDetails = await tmdb.movie.getDetails('238', {
language: 'en-US',
append_to_response: 'videos,credits'
});
console.log({
title: movieDetails.title,
director: movieDetails.credits.crew.find(person => person.job === 'Director')?.name,
cast: movieDetails.credits.cast.slice(0, 5).map(actor => actor.name)
});
The SDK includes a flexible caching system to improve performance and reduce API calls. You can use either file-based caching or Redis caching.
import TMDB, { FileCacheAdapter } from '@elselab-io/node-tmdb-sdk';
// Create a file cache adapter
const fileCache = new FileCacheAdapter({
directory: './tmdb-cache', // Cache directory (default: './cache')
defaultTTL: 3600 // Cache TTL in seconds (default: 1 hour)
});
// Initialize TMDB with the file cache
const tmdb = new TMDB('your-api-key', {
cache: fileCache,
enableCache: true, // Enable caching (default: true)
cacheTTL: 3600 // Default TTL in seconds (default: 1 hour)
});
// Use the SDK as usual - responses will be cached automatically
const movie = await tmdb.movie.getDetails('550');
import TMDB, { RedisCacheAdapter } from '@elselab-io/node-tmdb-sdk';
import { createClient } from 'redis'; // You need to install redis package
// Create Redis client
const redisClient = createClient();
await redisClient.connect();
// Create a Redis cache adapter
const redisCache = new RedisCacheAdapter(redisClient, {
keyPrefix: 'tmdb:', // Prefix for cache keys (default: 'tmdb:')
defaultTTL: 3600 // Default TTL in seconds (default: 1 hour)
});
// Initialize TMDB with the Redis cache
const tmdb = new TMDB('your-api-key', {
cache: redisCache
});
// Use the SDK as usual - responses will be cached in Redis
const movie = await tmdb.movie.getDetails('550');
You can disable caching for specific requests by passing an options object as the third parameter:
// This request will bypass the cache
const freshMovie = await tmdb.movie.getDetails('550', { language: 'en-US' }, {
useCache: false
});
See the examples/cache-examples.js
file for more detailed examples of using the caching system.
To use this SDK, you'll need a TMDB API key. You can obtain one by:
- Creating an account on TMDB
- Going to your API settings
- Following the steps to generate an API key
MIT License - see LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.