ConvertX API开发指南:构建自定义转换工作流

ConvertX API开发指南:构建自定义转换工作流

【免费下载链接】ConvertX 💾 Self-hosted online file converter. Supports 700+ formats 【免费下载链接】ConvertX 项目地址: https://gitcode.com/GitHub_Trending/co/ConvertX

你是否正在寻找一种高效的方式来处理多种文件格式转换?是否希望能够根据自己的需求定制转换流程?本文将详细介绍如何使用ConvertX API构建自定义转换工作流,帮助你轻松应对各种文件转换场景。读完本文后,你将能够:了解ConvertX API的基本架构、掌握常用转换器的调用方法、学会构建完整的转换工作流以及解决常见问题。

项目概述

ConvertX是一个自托管的在线文件转换工具,支持700多种格式。其核心功能是通过各种转换器实现不同文件格式之间的转换。项目的主要代码结构集中在src/converters目录下,包含了多种转换器的实现。

项目logo

官方文档:README.md

API架构解析

ConvertX的API架构基于转换器模块设计,每个转换器负责处理特定类型的文件转换。转换器相关的类型定义在src/converters/types.ts中,其中ConvertFnWithExecFile类型定义了转换器函数的基本结构:

export type ConvertFnWithExecFile = (
  filePath: string,
  fileType: string,
  convertTo: string,
  targetPath: string,
  options?: unknown,
  execFileOverride?: ExecFileFn,
) => Promise<string>;

src/converters/main.ts中,通过properties对象整合了所有转换器,例如:

const properties: Record<
  string,
  {
    properties: {
      from: Record<string, string[]>;
      to: Record<string, string[]>;
      options?: Record<...>;
    };
    converter: (
      filePath: string,
      fileType: string,
      convertTo: string,
      targetPath: string,
      options?: unknown,
    ) => unknown;
  }
> = {
  inkscape: {
    properties: propertiesInkscape,
    converter: convertInkscape,
  },
  // 其他转换器...
};

常用转换器调用

ConvertX提供了多种常用的转换器,以下是一些主要转换器及其对应的文件路径:

以FFmpeg转换器为例,调用方法如下:

import { convert as convertFFmpeg } from "./ffmpeg";

async function convertVideo() {
  const result = await convertFFmpeg(
    "input.mp4",
    "mp4",
    "avi",
    "output.avi",
    { bitrate: "1000k" }
  );
  console.log(result);
}

构建自定义工作流

构建自定义转换工作流的基本步骤如下:

  1. 确定转换需求,选择合适的转换器
  2. 调用转换器进行文件转换
  3. 处理转换结果,进行错误处理
  4. 组合多个转换步骤,实现复杂工作流

以下是一个组合图像转换和文档转换的示例:

import { convert as convertImagemagick } from "./imagemagick";
import { convert as convertLibreOffice } from "./libreoffice";

async function customWorkflow() {
  // 第一步:将PNG转换为JPG
  await convertImagemagick("image.png", "png", "jpg", "image.jpg");
  
  // 第二步:将生成的JPG插入到文档并转换为PDF
  await convertLibreOffice("document.docx", "docx", "pdf", "document.pdf", { images: ["image.jpg"] });
}

错误处理与日志

在转换过程中,可能会出现各种错误。ConvertX提供了基本的错误处理机制,在src/converters/main.tsmainConverter函数中:

try {
  const result = await converterFunc(inputFilePath, fileType, convertTo, targetPath, options);
  // 处理成功结果
  return "Done";
} catch (error) {
  console.error(
    `Failed to convert ${inputFilePath} from ${fileType} to ${convertTo} using ${converterName}.`,
    error,
  );
  return "Failed, check logs";
}

你可以根据需要扩展错误处理逻辑,例如记录详细日志到文件或发送通知。

高级应用示例

以下是一个完整的自定义转换工作流示例,实现从视频文件提取音频,再将音频转换为文本的功能:

import { convert as convertFFmpeg } from "./ffmpeg";
import { convert as convertPandoc } from "./pandoc";

async function videoToTextWorkflow(videoPath: string, outputTextPath: string) {
  // 步骤1:从视频中提取音频
  const audioPath = "temp_audio.wav";
  await convertFFmpeg(videoPath, "mp4", "wav", audioPath, { audioOnly: true });
  
  // 步骤2:将音频转换为文本(假设存在相应的转换器)
  await convertPandoc(audioPath, "wav", "txt", outputTextPath);
  
  console.log(`转换完成,结果保存在${outputTextPath}`);
}

总结与展望

通过本文的介绍,你已经了解了ConvertX API的基本架构和使用方法。你可以根据自己的需求,组合不同的转换器,构建自定义的转换工作流。未来,ConvertX可能会支持更多的文件格式和更复杂的转换场景,敬请期待。

如果你觉得本文对你有帮助,请点赞、收藏、关注三连。下期我们将介绍如何扩展ConvertX,添加自定义转换器。

附录:可用转换器列表

以下是ConvertX支持的主要转换器列表:

  • assimp.ts
  • calibre.ts
  • dvisvgm.ts
  • ffmpeg.ts
  • graphicsmagick.ts
  • imagemagick.ts
  • inkscape.ts
  • libheif.ts
  • libjxl.ts
  • libreoffice.ts
  • msgconvert.ts
  • pandoc.ts
  • potrace.ts
  • resvg.ts
  • vips.ts
  • vtracer.ts
  • xelatex.ts

完整的转换器实现可在src/converters/目录下查看。

【免费下载链接】ConvertX 💾 Self-hosted online file converter. Supports 700+ formats 【免费下载链接】ConvertX 项目地址: https://gitcode.com/GitHub_Trending/co/ConvertX

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值