@dan-uni/dan-any-ext-ass
v2.2.3
Published
Ass extension for dan-any, a danmaku transformer lib, based on biliy.
Readme
@dan-uni/dan-any-ext-ass
@dan-uni/dan-any-ext-ass 是 dan-any 的 ASS 扩展,负责将弹幕数据生成 ASS 字幕文件,并提供与 dan-any 插件/适配器的集成点。
主要功能
- 从
UniChunk生成标准 ASS 字幕文本 - 提供
AssAdapter用于从带有 raw 信息的 ASS 还原为UniChunk - 提供
AssTransformerLikePluginConfigurator,以 plugin 形式将生成器注入到dan-any的处理流水中
AssAdapter 支持还原由 dan-any v1 / v2 / biliy 生成的 ASS:
- v2:从
raw.new读取并恢复为DanuniPbAdapter - v1/biliy:从
raw.old读取并恢复为DanuniJsonAdapter
快速开始
- 安装依赖:
vp install- 运行测试:
vp test- 打包构建:
vp pack使用示例
1) 从 UniChunk 生成 ASS
import fs from "node:fs";
import { AssTransformerLikePluginConfigurator } from "@dan-uni/dan-any-ext-ass";
// 你需要先准备一个 50x50 的 2D canvas 上下文
// 不同环境的获取方式见下方「Canvas 上下文获取方式」
const assText = await chunk.plugin(
AssTransformerLikePluginConfigurator(canvasCtx, {
filename: "video.xml",
title: "示例",
}),
);
fs.writeFileSync("output.ass", assText, "utf-8");2) 从 ASS 还原为 UniChunk
import { AssAdapter } from "@dan-uni/dan-any-ext-ass";
// assText 是由 dan-any v1 / v2 生成的、包含 raw 信息的 ASS 文本
const restoredChunk = await udb.import(AssAdapter(assText));3) Canvas 上下文获取方式
generateASS / AssTransformerLikePluginConfigurator 需要一个 50x50 的 2D Canvas 上下文 CanvasCtx。
下面是常见环境的获取方式:
// Node.js + canvas
import { createCanvas } from "canvas";
const canvas = createCanvas(50, 50);
const canvasCtx = canvas.getContext("2d");// Node.js + Fabric.js
import { StaticCanvas } from "fabric/node";
const canvasCtx = new StaticCanvas(undefined, { width: 50, height: 50 }).getContext();// Browser + Native Canvas
const canvas = document.createElement("canvas");
canvas.width = 50;
canvas.height = 50;
const canvasCtx = canvas.getContext("2d");// Browser + Fabric.js
import { Canvas } from "fabric";
const canvasCtx = new Canvas("canvas", { width: 50, height: 50 }).getContext();API 概览
AssAdapter(ass: string)— 从带 raw 信息的 ASS 还原并返回UniChunk,兼容dan-any v1 / v2AssTransformerLikePluginConfigurator(canvasCtx, options?)— 返回一个 plugin configurator,调用后会把UniChunk转换成 ASS 文本generateASS(uchunk, options, canvasCtx)— 底层生成函数(可直接调用)parseAssRawField(ass)— 从 ASS 文本解析出内嵌的 raw 信息并还原为弹幕记录(若存在)
配置与扩展
- 可通过传入
options自定义输出文件名、ASS 的 Script Info 标题、字幕样式等(参见源码ass-gen/types.ts与config.ts) CanvasCtx的类型定义与环境示例可直接参考源码src/ass-gen/types.ts
许可与致谢
- 本项目许可:MIT
- 依赖于
dan-any核心库以完成弹幕数据结构与转换 - 使用了justorez/biliy的代码(MIT LICENSE),并使用了AI进行修改与修复,同时支持了更优的Raw还原功能。
贡献
- 欢迎提交 issues / PR。提交前请运行
vp check与vp test。
更多
- 源码与示例请查看
src/ass-gen、src/ass、src/util子目录。
