-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmedia-processing.ts
92 lines (81 loc) · 3.75 KB
/
media-processing.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import { BaseMediaProvider } from '../core/BaseMediaProvider';
import { MediaContent } from '../core/interfaces';
import dotenv from 'dotenv';
// Load environment variables
dotenv.config();
async function main() {
// Initialize the media provider
const mediaProvider = new BaseMediaProvider();
await mediaProvider.initialize();
try {
// Example 1: Process a PDF document
const pdfContent: MediaContent = {
type: 'pdf',
url: 'https://example.com/sample.pdf'
};
console.log('\nProcessing PDF...');
const pdfAnalysis = await mediaProvider.extractPDFContent(pdfContent);
console.log('PDF Summary:', pdfAnalysis.summary);
console.log('Page Count:', pdfAnalysis.metadata?.pages);
// Example 2: Extract content from a webpage
console.log('\nProcessing webpage...');
const webAnalysis = await mediaProvider.extractLinkContent('https://example.com');
console.log('Webpage Summary:', webAnalysis.summary);
console.log('Title:', webAnalysis.metadata?.title);
// Example 3: Process an image
const imageContent: MediaContent = {
type: 'image',
url: 'https://example.com/sample.jpg'
};
console.log('\nProcessing image...');
const imageAnalysis = await mediaProvider.analyzeImage(imageContent);
console.log('Image Content:', imageAnalysis.content);
console.log('Entities Found:', imageAnalysis.entities?.length);
// Example 4: Transcribe audio
const audioContent: MediaContent = {
type: 'audio',
url: 'https://example.com/sample.mp3'
};
console.log('\nTranscribing audio...');
const audioAnalysis = await mediaProvider.transcribeAudio(audioContent);
console.log('Transcription:', audioAnalysis.content);
console.log('Summary:', audioAnalysis.summary);
// Example 5: Process video
const videoContent: MediaContent = {
type: 'video',
url: 'https://example.com/sample.mp4'
};
console.log('\nProcessing video...');
const videoAnalysis = await mediaProvider.processVideo(videoContent);
console.log('Video Content:', videoAnalysis.content);
console.log('Frame Count:', videoAnalysis.metadata?.frameCount);
// Example 6: Batch processing
console.log('\nProcessing batch of media...');
const batchResults = await mediaProvider.processBatch([
pdfContent,
imageContent,
audioContent
]);
console.log('Batch Results:', batchResults.map(result => ({
type: result.content.substring(0, 50) + '...',
summary: result.summary
})));
// Example 7: Summarize a conversation
console.log('\nSummarizing conversation...');
const conversationAnalysis = await mediaProvider.summarizeConversation([
{ role: 'user', content: 'Can you help me understand machine learning?' },
{ role: 'assistant', content: 'Machine learning is a type of artificial intelligence...' },
{ role: 'user', content: 'What are some common applications?' },
{ role: 'assistant', content: 'Common applications include image recognition, natural language processing...' }
]);
console.log('Conversation Summary:', conversationAnalysis.summary);
console.log('Topics:', conversationAnalysis.topics);
console.log('Message Count:', conversationAnalysis.metadata?.messageCount);
} catch (error) {
console.error('Error processing media:', error instanceof Error ? error.message : String(error));
} finally {
await mediaProvider.shutdown();
}
}
// Run the example
main().catch(console.error);