subtitle_toolkit 0.0.2 copy "subtitle_toolkit: ^0.0.2" to clipboard
subtitle_toolkit: ^0.0.2 copied to clipboard

A Flutter package for parsing, manipulating, and managing subtitle files. Supports SRT format with features like timing adjustments, speed modifications, and subtitle merging.

Subtitle Toolkit #

A Flutter package for parsing, manipulating, and managing subtitle files. Currently supports SRT format with features for timing adjustments, speed modifications, and subtitle merging.

Features #

  • Parse SRT files and strings into structured subtitle entries
  • Convert subtitle entries back to SRT format
  • Shift subtitle timings forward or backward
  • Adjust playback speed of subtitles
  • Merge overlapping subtitles
  • Type-safe subtitle entry model with equality support
  • Error handling using Either type from dartz

Getting started #

Add this package to your Flutter project by adding the following to your pubspec.yaml:

dependencies:
  subtitle_toolkit: ^0.0.1

Usage #

Parse SRT content #

import 'package:subtitle_toolkit/subtitle_toolkit.dart';

// Parse from string
final result = SubtitleParser.parseString(srtContent);
result.fold(
  (error) => print('Error: $error'),
  (entries) => print('Parsed ${entries.length} subtitles'),
);

// Parse from file
final fileResult = await SubtitleParser.parseFile('path/to/file.srt');
fileResult.fold(
  (error) => print('Error: $error'),
  (entries) => print('Parsed ${entries.length} subtitles'),
);

// Parse from URL
final urlResult = await SubtitleParser.parseUrl('https://example.com/subtitles.srt');
urlResult.fold(
  (error) => print('Error: $error'),
  (entries) => print('Downloaded and parsed ${entries.length} subtitles'),
);

Modify timings #

// Shift all subtitles forward by 2 seconds
final shifted = SubtitleParser.shiftTimings(entries, Duration(seconds: 2));

// Make subtitles play 50% faster
final faster = SubtitleParser.adjustSpeed(entries, 1.5);

// Merge overlapping subtitles
final merged = SubtitleParser.mergeOverlapping(entries);

Convert back to SRT #

// Convert to SRT string
final srtString = SubtitleParser.entriesToString(entries);

// Write to file
final writeResult = await SubtitleParser.writeToFile(entries, 'output.srt');
writeResult.fold(
  (error) => print('Error: $error'),
  (_) => print('Successfully wrote to file'),
);

Additional information #

Features #

  • Parse SRT files, strings, and URLs
  • Convert subtitles to SRT format
  • Shift subtitle timings
  • Adjust playback speed
  • Merge overlapping subtitles
  • Enforce minimum subtitle duration
  • Type-safe subtitle entry model
  • Error handling using Either type

Supported formats #

Currently supports SRT (SubRip) format. Future versions may add support for additional subtitle formats like WebVTT, SSA/ASS, etc.

Error Handling #

All parsing methods (parseString, parseFile, parseUrl) return an Either type, providing clear error messages when something goes wrong:

final result = await SubtitleParser.parseUrl('https://example.com/subtitles.srt');
result.fold(
  (error) {
    // Handle errors (e.g., HTTP errors, invalid format)
    print('Failed to parse subtitles: $error');
  },
  (entries) {
    // Process valid subtitles
    for (final entry in entries) {
      print('${entry.startTime} -> ${entry.endTime}: ${entry.text}');
    }
  },
);

Contributing #

Contributions are welcome! Please feel free to submit a Pull Request.

License #

This project is licensed under the MIT License - see the LICENSE file for details.

2
likes
150
points
36
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter package for parsing, manipulating, and managing subtitle files. Supports SRT format with features like timing adjustments, speed modifications, and subtitle merging.

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

dartz, equatable, flutter, http

More

Packages that depend on subtitle_toolkit