// 注释掉直接引用的Node.js模块
// const fs = require('fs');
// const path = require('path');
// const ffmpeg = require('fluent-ffmpeg');
const path = require('path-browserify');

// 使用IPC通信处理音频
const processProjectAudio = async (projectId, audioPath, segments, outputDir) => {
  try {
    // 检查electron对象是否存在
    if (typeof window.electron !== 'undefined' && window.electron.ipcRenderer) {
      // 获取正确的资源目录路径
      const resourcesResult = await window.electron.ipcRenderer.invoke('get-resources-path');
      if (!resourcesResult.success) {
        throw new Error(`无法获取资源目录: ${resourcesResult.error}`);
      }
      
      // 使用资源目录作为音频输出的基础目录
      const baseResourceDir = resourcesResult.path;
      
      // 调用主进程处理音频
      const result = await window.electron.ipcRenderer.invoke('process-project-audio', {
        projectId,
        audioPath,
        segments,
        outputDir: baseResourceDir // 使用资源目录
      });
      
      return result;
    } else {
      // 处理非Electron环境（例如开发环境中的Web浏览器）
      console.warn('Electron IPC不可用，无法处理音频');
      
      // 模拟成功返回，用于开发环境测试
      return {
        success: true,
        totalSegments: segments.length,
        processedSegments: 0,
        segments: []
      };
    }
  } catch (error) {
    console.error('处理项目音频失败:', error);
    return {
      success: false,
      error: error.message
    };
  }
};

// 转换时间格式为秒
const timeToSeconds = (timeString) => {
  // 处理SRT格式: 00:00:12,345
  const normalizedTime = timeString.replace(',', '.');
  const [hours, minutes, seconds] = normalizedTime.split(':').map(parseFloat);
  return hours * 3600 + minutes * 60 + seconds;
};

// 获取音频时长（秒）- 使用IPC通信
const getAudioDuration = async (audioPath) => {
  try {
    // 检查electron对象是否存在
    if (typeof window.electron !== 'undefined' && window.electron.ipcRenderer) {
      const result = await window.electron.ipcRenderer.invoke('get-audio-duration', { audioPath });
      return result.duration;
    } else {
      // 处理非Electron环境，返回模拟的时长
      console.warn('Electron IPC不可用，无法获取音频时长');
      return 0;
    }
  } catch (error) {
    console.error('获取音频时长失败:', error);
    throw error;
  }
};

// 删除以下函数，因为已经重新定义了上面的getAudioDuration
// const ensureDirectoryExists = (directory) => {
//   if (!fs.existsSync(directory)) {
//     fs.mkdirSync(directory, { recursive: true });
//     console.log(`创建目录: ${directory}`);
//   }
// };

// const getAudioDuration = (filePath) => {
//   return new Promise((resolve, reject) => {
//     ffmpeg.ffprobe(filePath, (err, metadata) => {
//       if (err) {
//         return reject(err);
//       }
//       resolve(metadata.format.duration);
//     });
//   });
// };

// const cutAudioSegment = (inputFile, outputFile, startTime, duration) => {
//   return new Promise((resolve, reject) => {
//     ffmpeg(inputFile)
//       .setStartTime(startTime)
//       .setDuration(duration)
//       .output(outputFile)
//       .on('end', () => {
//         console.log(`音频片段已保存: ${outputFile}`);
//         resolve();
//       })
//       .on('error', (err) => {
//         console.error('音频处理错误:', err);
//         reject(err);
//       })
//       .run();
//   });
// };

// 使用CommonJS导出方式
module.exports = {
  processProjectAudio,
  timeToSeconds,
  getAudioDuration
}; 