分组文案时间轴合并代码|按组统一结束时间调整句首时间

分组文案时间轴合并代码

这是一段JavaScript代码,接收分组文案数组(wenan_group)和时间轴数组(timeline),按组统一结束时间为组内最后句end,首句用原始start,后续句start为前句end减0.3秒(取≥0),生成带时间信息的分组文案时间轴数组(wenan_group_timeline)。

📝 提示词原文

累计复制 0
// 定义异步主函数main,接收参数对象{params},返回Promise包裹的输出结果
async function main({ params }: Args): Promise<Output> {
    // 从参数中提取分组文案数组wenan_group和时间轴数组timeline
    const { wenan_group, timeline } = params;
  
    // 初始化结果数组(存分组文案时间轴)、跟踪时间轴当前索引的变量
    const wenan_group_timeline = [];
    let currentIndex = 0;  // 记录当前用到timeline的第几项
  
    // 遍历wenan_group中的每个分组(group)
    for (const group of wenan_group) {
      // 获取当前组内文案的行数(句子数)
      const groupLen = group.wenan.length;
  
      // 计算当前组统一的结束时间:取组内最后一句在timeline中的end(当前索引+组内行数-1)
      const unifiedEnd = timeline[currentIndex + groupLen - 1].end;
  
      // 遍历组内每句文案(i是组内句子索引)
      for (let i = 0; i < groupLen; i++) {
        // 当前句文案:去首尾空格(避免空格干扰)
        const content = group.wenan[i].trim();
  
        let start: number;  // 声明当前句的开始时间变量
  
        if (i === 0) {
          // 组内第一句:用timeline中当前索引对应项的原始start
          start = timeline[currentIndex + i].start;
        } else {
          // 组内后续句:start=前一句的end - 0.3秒(300000微秒),且不能小于0
          const prevEnd = timeline[currentIndex + i - 1].end;  // 前一句的end
          start = Math.max(0, prevEnd - 300000);  // 减0.3秒(单位微秒),取≥0的值
        }
  
        // 将当前句的时间信息(start/end/content)加入结果数组
        wenan_group_timeline.push({
          start,
          end: unifiedEnd,  // 统一用组内最后句end作为结束时间
          content
        });
      }
  
      // 时间轴索引累加:跳过当前组已用的groupLen个时间轴项
      currentIndex += groupLen;
    }
  
    // 返回分组文案时间轴结果
    return { wenan_group_timeline };
}

扣子工作流代码节点常见问题

代码节点支持哪些编程语言?
目前扣子工作流代码节点主要支持 JavaScript(Node.js 环境)和 Python。您可以在节点设置中选择语言,推荐使用 JavaScript 以更好地与前端交互。
如何在代码节点中引入第三方库?
扣子代码节点内置了常用库(如 axios、lodash),无需额外安装。如果需要其他库,可使用动态导入(ES6)或通过在线依赖注入。具体可参考官方文档的“允许的依赖列表”。
代码节点如何获取上游节点的输出数据?
通过代码节点的输入参数对象 inputs 获取,例如 const data = inputs.user_query。确保上游节点的输出字段名与代码中引用的名称一致。
代码节点如何返回数据给下游节点?
使用 return 语句返回一个对象,对象的属性将成为输出字段。例如 return { result: "处理完成" };。下游节点可通过 {{节点名.result}} 引用。
代码节点执行超时或内存不足怎么办?
扣子代码节点默认超时时间较短(通常 5-10 秒),避免在代码中执行大量同步循环或大数据处理。建议将复杂任务拆分为多个节点,或使用异步流处理。如果必须处理大数据,考虑分批或调用外部API。
代码节点能访问环境变量或工作流全局变量吗?
可以通过 process.env 访问系统环境变量(仅限内置变量)。工作流全局变量(如工作流ID、用户ID)可通过 inputs 中的特定字段获取,具体需查看平台文档。
代码节点出错后如何定位问题?
利用 console.log() 打印关键变量,然后在工作流运行日志中查看输出。也可以使用 try-catch 捕获错误并返回自定义错误信息,便于调试。