import React from 'react'; import { DiarizationEntry } from '../types'; import { ExportIcon } from './icons'; interface DiarizationResultProps { result: DiarizationEntry[]; fileName: string; speakerCount: number; useStarFormat: boolean; } const speakerColors: { [key: string]: string } = { 'Locuteur A': 'bg-blue-900/50 border-blue-700', '*Locuteur_A': 'bg-blue-900/50 border-blue-700', 'Locuteur B': 'bg-purple-900/50 border-purple-700', '*Locuteur_B': 'bg-purple-900/50 border-purple-700', 'Locuteur C': 'bg-green-900/50 border-green-700', '*Locuteur_C': 'bg-green-900/50 border-green-700', 'Locuteur D': 'bg-indigo-900/50 border-indigo-700', '*Locuteur_D': 'bg-indigo-900/50 border-indigo-700', }; const defaultColor = 'bg-gray-700/50 border-gray-600'; const DiarizationResult: React.FC = ({ result, fileName, speakerCount, useStarFormat }) => { const getSpeakerColor = (speaker: string) => { // Retirer le formatage pour trouver la couleur de base const baseSpeaker = speaker.replace(/^\*/, '').replace(/_/g, ' '); return speakerColors[baseSpeaker] || defaultColor; }; const handleExport = () => { const header = `Résultat de la Diarisation pour le fichier : ${fileName}\n`; const stats = `Nombre de locuteurs détectés : ${speakerCount}\n\n`; const content = result .map(entry => { const prefix = useStarFormat ? '\n' : ''; return `${prefix}[${entry.timestamp}] ${entry.speaker}: ${entry.text}`; }) .join('\n'); const fullText = header + stats + content; const blob = new Blob([fullText], { type: 'text/plain;charset=utf-8' }); const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; const safeFileName = fileName.replace(/\.[^/.]+$/, ""); link.download = `${safeFileName}-diarisation.txt`; document.body.appendChild(link); link.click(); document.body.removeChild(link); URL.revokeObjectURL(url); }; return (

Résultat de la Diarisation

Fichier : {fileName} | {speakerCount} locuteur(s) détecté(s)

{result.map((entry, index) => (
[{entry.timestamp}]
{entry.speaker}

{entry.text}

))}
); }; export default DiarizationResult;