Skip to content

feat: support .ass subtitle files - #70

Merged
johnpc merged 1 commit into
mainfrom
feat/ass-subtitle-support
Nov 7, 2026
Merged

johnpc merged 1 commit into
mainfrom
feat/ass-subtitle-support

Conversation

@johnpc

@johnpc johnpc commented Nov 7, 2026

Copy link
Copy Markdown
Owner

Closes #24

Summary

Adds support for Advanced SubStation Alpha (.ass) subtitles alongside .srt.

  • Discovery: .ass files next to videos are now picked up (findAllSrtFiles), including language filtering (movie.en.ass) and video matching.
  • Output naming: outputs keep the input's format, e.g. movie.en.ass → movie.en.ffsubsync.ass / movie.en.alass.ass.
  • No reprocessing: generated .ass outputs (*.ffsubsync.ass, etc.) are never treated as inputs, and an .ass file counts as already synced once every enabled engine that supports .ass has produced output.
  • Engine support (new src/subtitleFormats.ts):
    • ffsubsync: .srt + .ass
    • alass: .srt + .ass (alass-cli lists .srt, .ass/.ssa, .idx, .sub)
    • autosubsync: .srt only (it parses via its own SRT reader), so it is skipped for .ass with a log line like ⊘ autosubsync skipped: Skipping autosubsync for movie.en.ass - autosubsync does not support .ass subtitles. Skips don't count toward the failure tracker.
    • If no enabled engine supports a file's format (e.g. INCLUDE_ENGINES=autosubsync), the file is ignored during the scan with a summary log line.
  • The web UI already strips .ass in its filename cleanup, so no UI changes were needed.
  • README documents .ass support and the per-engine support table (prettier, run by the pre-commit hook, also reformatted the README tables).

Note: extension matching is case-insensitive, and outputs use a lowercase extension.

Testing

  • npm run lint: passes
  • npm test: 9 suites / 24 tests pass (6 new suites: subtitleFormats, helpers (buildOutputPath), findAllSrtFiles, findMatchingVideoFile, generateAutosubsyncSubtitles (skip for .ass), generateFfsubsyncSubtitles (.ass → .ass command))
  • npm run build: passes

Discover .ass subtitles alongside .srt and sync them with engines that
support the format. Outputs keep the input extension (e.g.
movie.en.ffsubsync.ass) and generated .ass outputs are never reprocessed.

ffsubsync and alass handle .ass natively; autosubsync only reads SRT, so it
is skipped for .ass files with a clear log message instead of failing.

Closes #24
@johnpc
johnpc merged commit 38dd784 into main Nov 7, 2026
@johnpc
johnpc deleted the feat/ass-subtitle-support branch November 7, 2026 15:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Function: Request support for .ass files

1 participant