// Simple test script to verify TVDB API functionality const axios = require('axios'); const dotenv = require('dotenv'); // Load environment variables dotenv.config(); async function testTVDBAPI() { try { console.log('Testing TVDB API connectivity...'); // Get API key from environment const apiKey = process.env.TVDB_API_KEY || process.env.API_KEY; if (!apiKey) { throw new Error('TVDB_API_KEY not found in environment variables'); } // First get a token const loginResponse = await axios.post('https://api4.thetvdb.com/v4/login', { apikey: apiKey }, { headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' } }); console.log('Login successful:', loginResponse.data.status); if (loginResponse.data && loginResponse.data.data && loginResponse.data.data.token) { const token = loginResponse.data.data.token; console.log('Got token:', token.substring(0, 50) + '...'); // Test search with the token const searchResponse = await axios.get('https://api4.thetvdb.com/v4/search', { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', 'Accept': 'application/json' }, params: { query: 'IGPX' } }); console.log('Search response:', searchResponse.data); if (searchResponse.data && searchResponse.data.data) { console.log('Found shows:', searchResponse.data.data.length); searchResponse.data.data.forEach(show => { console.log(`- ${show.name} (ID: ${show.id})`); }); } // Test getting show details with extended info const showId = '73011'; // IGPX Immortal Grand Prix ID const showResponse = await axios.get(`https://api4.thetvdb.com/v4/series/${showId}/extended`, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', 'Accept': 'application/json' } }); console.log('Show details response:', showResponse.data); // Test getting episodes for the show const episodesResponse = await axios.get(`https://api4.thetvdb.com/v4/series/${showId}/episodes`, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', 'Accept': 'application/json' }, params: { page: 0 } }); console.log('Episodes response structure:', { data: episodesResponse.data.data ? 'has data' : 'no data', total: episodesResponse.data.data?.total, episodes: episodesResponse.data.data?.episodes ? episodesResponse.data.data.episodes.length : 0 }); if (episodesResponse.data && episodesResponse.data.data && episodesResponse.data.data.episodes) { console.log('First few episodes:'); episodesResponse.data.data.episodes.slice(0, 5).forEach(episode => { console.log(`- Episode ${episode.number}: ${episode.name} (Season ${episode.seasonNumber})`); }); } } } catch (error) { console.error('API Test Error:', error.message); console.error('Error details:', error.response?.data || error); } } testTVDBAPI();