@elselab-io/node-tmdb-sdk
TypeScript icon, indicating that this package has built-in type declarations

1.0.6 • Public • Published

@elselab-io/node-tmdb-sdk

npm version License: MIT Tests

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.

🚀 Installation

npm install @elselab-io/node-tmdb-sdk

⚡ Quick Start

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"

✨ Features

  • 📱 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

📖 Examples

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)
});

💾 Caching

The SDK includes a flexible caching system to improve performance and reduce API calls. You can use either file-based caching or Redis caching.

📁 File-based 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');

🔴 Redis Caching

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');

🚫 Disabling Cache for Specific Requests

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.

🔑 API Key

To use this SDK, you'll need a TMDB API key. You can obtain one by:

  1. Creating an account on TMDB
  2. Going to your API settings
  3. Following the steps to generate an API key

📄 License

MIT License - see LICENSE file for details.

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.


Else Lab

Made with ❤️ by Else Lab

WebsiteGitHubContact

Package Sidebar

Install

npm i @elselab-io/node-tmdb-sdk

Weekly Downloads

1

Version

1.0.6

License

MIT

Unpacked Size

57.9 kB

Total Files

19

Last publish

Collaborators

  • elselab