vtt

Crates.iovtt
lib.rsvtt
version
sourcesrc
created_at2024-12-11 03:30:49.829035
updated_at2024-12-11 03:48:37.403713
descriptionRust types for serializing and deserializing WebVTT with Serde.
homepagehttps://github.com/Govcraft/vtt
repositoryhttps://github.com/Govcraft/vtt
max_upload_size
id1479501
Cargo.toml error:TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
Roland Rodriguez (rrrodzilla)

documentation

https://docs.rs/vtt

README

VTT

VTT is a Rust library for parsing and writing WebVTT (Web Video Text Tracks) files. It helps you create, edit, and manage WebVTT cues, timestamps, and settings. VTT works smoothly with Serde for easy data handling.

Features

  • Parse WebVTT Files: Turn WebVTT files into Rust data structures.
  • Write WebVTT Files: Convert Rust data back to WebVTT format.
  • Manage Cues: Add, change, and arrange WebVTT cues.
  • Handle Timestamps: Work with precise timestamps for video tracks.
  • Use with Serde: Easily serialize and deserialize data using Serde.

Installation

Add VTT to your project's Cargo.toml:

[dependencies]
vtt = "0.1.0"
serde = { version = "1.0", features = ["derive"] }

Usage

Import the prelude to access common types:

use vtt::prelude::*;
use std::time::Duration;

fn main() {
    let mut vtt = WebVtt::new();
    vtt.add_metadata("Language", "en-US");

    let cue = VttCue {
        identifier: Some("1".to_string()),
        start: VttTimestamp::new(Duration::from_secs(1)),
        end: VttTimestamp::new(Duration::from_secs(5)),
        settings: None,
        payload: "Hello, world!".to_string(),
    };
    vtt.add_cue(cue);

    println!("{}", vtt);
}

Parsing a WebVTT File

Convert a WebVTT string into a WebVtt instance:

use vtt::prelude::*;
use std::str::FromStr;

fn parse_vtt(content: &str) -> Result<WebVtt, VttParseError> {
    WebVtt::from_str(content)
}

fn main() {
    let content = "WEBVTT\n\n00:01:02.000 --> 00:03:04.000\nHello, world!";
    let vtt = parse_vtt(content).unwrap();
    println!("Number of cues: {}", vtt.cues.len());
}

Writing to WebVTT

Convert a WebVtt instance to a WebVTT string:

use vtt::prelude::*;
use std::time::Duration;

fn main() {
    let mut vtt = WebVtt::new();
    vtt.add_metadata("Language", "en-US");

    let cue = VttCue {
        identifier: Some("1".to_string()),
        start: VttTimestamp::new(Duration::from_secs(1)),
        end: VttTimestamp::new(Duration::from_secs(5)),
        settings: None,
        payload: "Hello, world!".to_string(),
    };
    vtt.add_cue(cue);

    let serialized = vtt.to_string();
    println!("{}", serialized);
}

Documentation

Read the full documentation here.

Contributing

You can help make VTT better. Follow these steps:

  1. Fork the repository.
  2. Create a new branch.
  3. Make your changes.
  4. Submit a pull request.

Make sure your code follows the project's style and passes all tests.

License

This project is licensed under the MIT or Apache-2.0 license.

Contact

For questions or support, visit the repository.

Commit count: 11

cargo fmt