8.3 KiB
FlixInfo
Get detailed movie and TV series information using Netflix IDs. FlixInfo is a Node.js library that fetches comprehensive movie/TV show data by combining Netflix content information with The Movie Database (TMDb) data.
🎯 Features
- Netflix Content Details: Fetch movie/TV show information directly from Netflix
- TMDb Integration: Enrich data with The Movie Database information including details, credits, images, and trailers
- Multi-language Support: Support for different languages via TMDb API
- Regional Support: Works with both Turkish (tr.flixable.com) and Global (flixable.com) Netflix content
- Google Search Fallback: Automatic Google search integration when direct TMDb lookup fails
- Comprehensive Data: Returns Netflix data + TMDb data + IMDB ratings in a single response
📦 Installation
npm install flixinfo
🚀 Quick Start
const FlixInfo = require('flixinfo');
// Initialize with your TMDb API key
const flixInfo = new FlixInfo('YOUR_TMDB_API_KEY');
// Get movie/TV show information
async function getMovieInfo() {
try {
const info = await flixInfo.getNetflixInfo(
81151514, // Netflix ID
'en-EN', // Language for TMDb API
'tr' // Netflix location ('tr' for Turkey, other for global)
);
console.log(info);
} catch (error) {
console.error('Error:', error);
}
}
getMovieInfo();
🔧 API Reference
Constructor
new FlixInfo(tmdbApiKey)
Parameters:
tmdbApiKey(string): Required - Your TMDb API key. Get one from https://www.themoviedb.org/settings/api
Methods
getNetflixInfo(netflixId, theMovieDbLanguage, netflixLocation)
Fetches comprehensive movie/TV show information.
Parameters:
netflixId(number): Required - Netflix content IDtheMovieDbLanguage(string): Required - Language code for TMDb API (e.g., 'en-EN', 'tr-TR')netflixLocation(string): Required - Netflix location ('tr' for Turkish content, anything else for global)
Returns: Returns a Promise that resolves to an object containing:
{
result: 1, // Success indicator
error: 0, // Error indicator
watch: "movie" | "tv", // Content type
imdb: {
id: "string", // IMDB ID (if available)
rate: "string" // IMDB rating (if available)
},
netflix: {
title: "string", // Title on Netflix
year: "string", // Release year
poster_url: "string", // Netflix poster URL
age_rates: "string", // Age rating
season: "string", // Season count (for TV shows)
runtime: "string", // Runtime (for movies)
overview: "string", // Description/overview
genres: ["string"], // Array of genres
cast: ["string"] // Array of cast members
},
tmdb: {
google_search: boolean, // Whether Google search was used
details: {}, // TMDb details object
credits: {}, // TMDb credits object
images: {}, // TMDb images object
trailers: {} // TMDb trailers object
}
}
📍 Finding Netflix IDs
You can find Netflix IDs using:
- Flixable: Browse tr.flixable.com (Turkish) or flixable.com (Global)
- Netflix URL: The ID is the number in the Netflix URL:
https://www.netflix.com/title/NETFLIX_ID - Browser Extensions: Various browser extensions can show Netflix IDs
🌍 Supported Languages
TMDb API supports various languages. Common examples:
'en-EN'- English'tr-TR'- Turkish'de-DE'- German'fr-FR'- French'es-ES'- Spanish'it-IT'- Italian
See TMDb API Documentation for complete list.
🎬 Usage Examples
Basic Movie Information
const FlixInfo = require('flixinfo');
const flixInfo = new FlixInfo('YOUR_TMDB_API_KEY');
// Get movie info (Inception - Netflix ID: 70131314)
const movieInfo = await flixInfo.getNetflixInfo(70131314, 'en-EN', 'tr');
console.log(`Title: ${movieInfo.netflix.title}`);
console.log(`Year: ${movieInfo.netflix.year}`);
console.log(`Genres: ${movieInfo.netflix.genres.join(', ')}`);
TV Series Information
// Get TV series info (Ragnarok - Netflix ID: 80232926)
const seriesInfo = await flixInfo.getNetflixInfo(80232926, 'en-EN', 'tr');
console.log(`Series: ${seriesInfo.netflix.title}`);
console.log(`Seasons: ${seriesInfo.netflix.season}`);
console.log(`First Air Date: ${seriesInfo.tmdb.details.first_air_date}`);
Turkish Content
// Get Turkish content with Turkish language support
const turkishInfo = await flixInfo.getNetflixInfo(81151514, 'tr-TR', 'tr');
console.log(`Türkçe Başlık: ${turkishInfo.netflix.title}`);
console.log(`Tür: ${turkishInfo.netflix.genres.join(', ')}`);
console.log(`Özet: ${turkishInfo.netflix.overview}`);
Error Handling
const FlixInfo = require('flixinfo');
try {
const flixInfo = new FlixInfo('YOUR_TMDB_API_KEY');
const info = await flixInfo.getNetflixInfo(81151514, 'en-EN', 'tr');
console.log(info);
} catch (error) {
console.error('Error occurred:', error);
// Common errors:
// - 'missing tmdb api key' - Invalid or missing API key
// - 'this content was not found!' - Netflix ID not found
// - 'tmdb api connection error' - TMDb API connectivity issues
// - 'language parameters not found' - Invalid language parameter
}
🧪 Testing
Run the test suite:
npm test
The tests use Mocha, Chai, and Nock for HTTP mocking. Tests cover:
- API key validation
- Movie and TV show information retrieval
- Error handling
- Connection failures
🛠️ Development
Project Structure
flixinfo/
├── lib/
│ ├── index.js # Main FlixInfo class
│ └── module.js # Helper functions (IMDB, TMDb, Google search)
├── config/
│ └── index.js # Configuration constants
├── example/
│ └── getinfo.js # Usage example
├── test/
│ └── flixinfo.test.js # Test suite
├── index.js # Entry point
└── package.json
Dependencies
- cheerio: Server-side HTML parsing
- request: HTTP client for API calls
- config: Configuration management
Dev Dependencies
- mocha: Test framework
- chai: Assertion library
- nock: HTTP mocking for tests
📝 Notes
Data Sources
- Netflix Data: Sourced from Flixable (Netflix catalog)
- TMDb Data: Enriched with The Movie Database
- IMDB Data: Cross-referenced with IMDB ratings
- Google Search: Fallback when TMDb lookup fails
Limitations
- Requires active Netflix content (removed content won't be found)
- Dependent on Flixable availability
- TMDb API rate limits apply
- Some content may lack complete information
Error Scenarios
- Netflix content not found or removed
- Invalid TMDb API key
- Network connectivity issues
- Flixable service unavailability
- TMDb API downtime
🤝 Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
📄 License
This project is licensed under the ISC License - see the LICENSE file for details.
🔗 Links
🐛 Issues
Found a bug or have a feature request? Please open an issue.
Disclaimer: This library is for educational purposes only. Respect Netflix's terms of service and all applicable copyright laws.