- Move phase/plan docs into docs/ - Move legacy node:test files into tests/legacy/ with README - Remove .backup file, test audit artifacts, and unused AI prompt/skill files - Remove broken iOS GitHub workflows (reference missing MovieMapper-iOS/)
100 lines
3.3 KiB
JavaScript
100 lines
3.3 KiB
JavaScript
// 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();
|