test-both-files.jsโข7.21 kB
#!/usr/bin/env node
/**
* Test SRT MCP server with both example.srt and Arabic_Rephrased_Full.srt
*/
import { SRTTranslationMCPServer } from './dist/mcp/server.js';
import fs from 'fs';
async function testWithFile(filename, description) {
console.log(`\n${'='.repeat(60)}`);
console.log(`๐งช TESTING: ${description}`);
console.log(`๐ File: ${filename}`);
console.log(`${'='.repeat(60)}\n`);
try {
// Read SRT file
const srtContent = fs.readFileSync(filename, 'utf8');
const subtitleBlocks = srtContent.split('\n\n').filter(block => block.trim()).length;
console.log(`๐ File loaded: ${subtitleBlocks} subtitle blocks\n`);
// Create server instance
const server = new SRTTranslationMCPServer();
// Test 1: SRT Parsing
console.log('๐ Test 1: SRT Parsing');
const parseResult = await server.handleParseSRT({ content: srtContent });
const parseData = JSON.parse(parseResult.content[0].text);
console.log(`โ
Parsing: ${parseData.success ? 'SUCCESS' : 'FAILED'}`);
console.log(` Subtitles: ${parseData.subtitleCount}`);
console.log(` Errors: ${parseData.errors?.length || 0}`);
console.log(` Warnings: ${parseData.warnings?.length || 0}\n`);
// Test 2: Conversation Detection
console.log('๐ Test 2: Conversation Detection');
const conversationsResult = await server.handleDetectConversations({ content: srtContent });
const responseText = conversationsResult.content[0].text;
const jsonStart = responseText.indexOf('{');
const jsonEnd = responseText.lastIndexOf('}') + 1;
const jsonText = responseText.substring(jsonStart, jsonEnd);
const metadata = JSON.parse(jsonText);
console.log(`โ
Detection: SUCCESS`);
console.log(` Chunks: ${metadata.chunkCount}`);
console.log(` Duration: ${(metadata.totalDuration / 1000).toFixed(2)}s`);
console.log(` Languages: ${JSON.stringify(metadata.languageDistribution)}`);
console.log(` Speakers: ${JSON.stringify(metadata.speakerDistribution)}`);
if (metadata.chunks.length > 0) {
const firstChunk = metadata.chunks[0];
console.log(` First chunk: ${firstChunk.subtitleCount} subtitles, ${firstChunk.languageInfo.primary} (${firstChunk.languageInfo.confidence})`);
console.log(` Content type: ${firstChunk.contentType}, Complexity: ${firstChunk.complexity}`);
}
console.log('');
// Test 3: Content Analysis
console.log('๐ Test 3: Content Analysis');
const analysisResult = await server.handleAnalyzeContentForAI({ content: srtContent });
const analysis = JSON.parse(analysisResult.content[0].text);
console.log(`โ
Analysis: SUCCESS`);
console.log(` Total subtitles: ${analysis.totalSubtitles}`);
console.log(` Questions: ${analysis.totalQuestions}`);
console.log(` Exclamations: ${analysis.totalExclamations}`);
console.log(` Narration: ${analysis.totalNarration}`);
console.log(` Dialogue: ${analysis.totalDialogue}`);
console.log(` Speaker changes: ${analysis.speakerChanges}`);
console.log(` Avg length: ${analysis.averageSubtitleLength.toFixed(1)} chars`);
console.log(` Avg gap: ${analysis.averageGap.toFixed(0)}ms\n`);
// Test 4: AI Workflow Generation
console.log('๐ Test 4: AI Workflow Generation');
const workflowResult = await server.handleGenerateAIWorkflow({
content: srtContent,
targetLanguage: 'es',
sourceLanguage: 'en'
});
const workflow = JSON.parse(workflowResult.content[0].text);
console.log(`โ
Workflow: SUCCESS`);
console.log(` Content type: ${workflow.contentType}`);
console.log(` Strategy: ${workflow.strategy}`);
console.log(` Translation approach: ${workflow.translationApproach}`);
console.log(` Timing strategy: ${workflow.timingStrategy}`);
console.log(` Quality focus: ${workflow.qualityFocus}`);
console.log(` Recommendations: ${workflow.recommendations.length}\n`);
// Test 5: AI Context Optimization
console.log('๐ Test 5: AI Context Optimization');
const optimizedResult = await server.handleGetAIContextOptimizedChunks({
content: srtContent,
maxContextSize: 50000,
maxChunkSize: 8
});
const optResponseText = optimizedResult.content[0].text;
const optJsonStart = optResponseText.indexOf('{');
const optJsonEnd = optResponseText.lastIndexOf('}') + 1;
const optJsonText = optResponseText.substring(optJsonStart, optJsonEnd);
const optimized = JSON.parse(optJsonText);
console.log(`โ
Optimization: SUCCESS`);
console.log(` Total chunks: ${optimized.optimizationSummary.totalChunks}`);
console.log(` Context size: ${optimized.optimizationSummary.totalContextSize.toLocaleString()} chars`);
console.log(` Efficiency: ${optimized.optimizationSummary.contextEfficiency}`);
console.log(` Under limit: ${optimized.optimizationSummary.chunksUnderLimit}`);
console.log(` Over limit: ${optimized.optimizationSummary.chunksOverLimit}\n`);
// Test 6: Translation Structured Data
console.log('๐ Test 6: Translation Structured Data');
const translateResult = await server.handleTranslateSRT({
content: srtContent,
targetLanguage: 'es',
sourceLanguage: 'en'
});
const transResponseText = translateResult.content[0].text;
const transJsonStart = transResponseText.indexOf('{');
const transJsonEnd = transResponseText.lastIndexOf('}') + 1;
const transJsonText = transResponseText.substring(transJsonStart, transJsonEnd);
const translationData = JSON.parse(transJsonText);
console.log(`โ
Translation Data: SUCCESS`);
console.log(` Target: ${translationData.translationRequest.targetLanguage}`);
console.log(` Source: ${translationData.translationRequest.sourceLanguage}`);
console.log(` Subtitles: ${translationData.fileStructure.totalSubtitles}`);
console.log(` Chunks: ${translationData.fileStructure.totalChunks}`);
console.log(` Duration: ${(translationData.fileStructure.totalDuration / 1000).toFixed(2)}s`);
console.log(` Has errors: ${translationData.fileStructure.hasErrors}`);
console.log(` Validation: ${translationData.validationStatus.isValid ? 'PASSED' : 'FAILED'}\n`);
console.log(`โ
ALL TESTS PASSED for ${filename}\n`);
} catch (error) {
console.error(`โ Test failed for ${filename}:`, error.message);
console.error('Stack trace:', error.stack);
}
}
async function runComprehensiveTest() {
console.log('๐ SRT MCP SERVER COMPREHENSIVE TEST');
console.log('Testing with multiple SRT files to demonstrate capabilities\n');
// Test with example.srt (English, mixed content)
await testWithFile('/home/omd/Documents/Mix/SRT-MCP/example.srt', 'English Example File');
// Test with Arabic_Rephrased_Full.srt (Arabic content)
await testWithFile('/home/omd/Documents/Mix/SRT-MCP/Arabic_Rephrased_Full.srt', 'Arabic Content File');
console.log('๐ COMPREHENSIVE TEST COMPLETED');
console.log('All SRT MCP server functionality verified successfully!');
}
// Run the comprehensive test
runComprehensiveTest().catch(console.error);