3 个不稳定版本
0.2.1 | 2024年6月30日 |
---|---|
0.2.0 | 2023年12月16日 |
0.1.0 | 2023年12月9日 |
#501 在 解析器实现
每月下载 53 次
165KB
4.5K SLoC
aspasia
aspasia 是一个用 Rust 编写的字幕解析库,提供各种字幕处理功能。
格式解析相对宽松,意味着它会尽力将字幕文件解析为指定的格式,即使它们不完全符合规范。解析格式错误的字幕文件将返回空对象,而不是返回任何错误。
功能
- 解析各种不同格式的字幕文件
- SubRip (.srt)
- 高级 SubStation Alpha V4+ (.ass)
- SubStation Alpha V4 (.ssa)
- WebVTT (.vtt)
- MicroDVD (.sub)
- 根据文件扩展名和文件内容自动检测字幕格式
- 在保留兼容格式和信息的同时,在字幕格式之间进行转换
- 从字幕中移除格式信息
- 使用实用方法来调整字幕时间、计算单个事件的持续时间等
文档
https://docs.rs/aspasia/latest/aspasia/
用法
安装
您可以使用 Cargo 将 aspasia 添加到您的项目中:cargo add aspasia
...或者您可以编辑您的 Cargo.toml
以添加
[dependencies]
aspasia = "0.2"
示例
基本用法
use aspasia::{SubRipSubtitle, Subtitle, TimedEvent, TimedSubtitleFile, WebVttSubtitle};
// We can directly specify the format to open a subtitle file
let vtt = WebVttSubtitle::from_path("/path/to/some.vtt")?;
// and then directly work with its data
println!("{}", vtt.header().cloned().unwrap_or_default());
// or we could use the more general interface to open (timed) subtitle files
let sub = TimedSubtitleFile::new("/path/to/file.srt")?;
// Move the underlying data out in order to access format-specific properties
// Note that if the format doesn't match, this will perform a conversion instead of just moving the data
let mut srt = SubRipSubtitle::from(sub);
// Now we can access format-specific methods like SubRipSubtitle::renumber()
srt.renumber();
// Access and modify events
for event in srt.events_mut() {
event.shift(600.into());
}
// Write the modified subtitle to file
srt.export("/path/to/output.srt")?;
格式转换
use aspasia::{AssSubtitle, SubRipSubtitle, Subtitle, TimedSubtitleFile, WebVttSubtitle};
let sub = TimedSubtitleFile::new("/path/to/file.srt")?;
// Get the file as its specific format
let srt = SubRipSubtitle::from(sub);
// You can use into() to convert the file
let vtt: WebVttSubtitle = srt.into();
// or from()
let ass = AssSubtitle::from(vtt);
ass.export("/path/to/converted.ass")?;
请参阅 示例 文件夹以获取更多信息
路线图
aspasia 目前处于开发中,其 API 可能不是稳定的。一旦 API 和功能相对稳定,我将发布 1.0 版本。为此,任何反馈、错误报告或其他形式的贡献都非常欢迎。
计划
- 改进转换
- 支持更多字幕格式
- 更多用于处理字幕/字幕事件的实用方法
- 更好的测试覆盖率
- 更好的文档
- serde 功能?
许可证
aspasia 根据 BSD 0-Clause 许可证授权。
依赖项
~5.5MB
~163K SLoC