Skip to main content

A no-frills solution for fixing subtitle synchronization issues in SRT (SubRip Subtitle) files by precisely shifting all subtitle timestamps forward or backward using configurable time delays.

Project description

srt-time-tweaker

srt-time-tweaker is a no-frills solution for fixing subtitle synchronization issues in SRT (SubRip Subtitle) files by precisely shifting all subtitle timestamps forward or backward using configurable time delays.


Features

  • Shift subtitle timestamps by specified hours, minutes, seconds, and milliseconds
  • Accept delay as a single string in HH:MM:SS,ms format
  • Supports adding or subtracting delay to/from timestamps
  • Handles negative timing errors with an option to ignore or raise exceptions
  • Usable both as a command-line tool and as a Python importable function

Requirements

  • Python 3.x

Installation

pip install srt-time-tweaker

Usage

Command Line Interface (CLI)

Run srt-time-tweaker from the terminal to launch the program.

srt-time-tweaker INPUT_FILE [-o OUTPUT_FILE] [-H HOURS] [-M MINUTES] [-S SECONDS] [-ms MILLISECONDS] [-d DURATION] [--subtract] [--ignore-negative]

Arguments:

Argument Description Default
INPUT_FILE Path to input .srt subtitle file (required)
-o, --output Path to output .srt file output.srt
-H, --hours Hours to shift 0
-M, --minutes Minutes to shift 0
-S, --seconds Seconds to shift 0
-ms, --milliseconds Milliseconds to shift 0
-d, --duration Time delay in HH:MM:SS,ms format (overrides hours, minutes, seconds, milliseconds) None
--subtract Subtract the delay from timestamps instead of adding False
--ignore-negative Ignore negative timing errors instead of raising exceptions (while subtract) False

Examples:

Shift subtitles forward by 2 seconds:

srt-time-tweaker example.srt -S 2 -o shifted.srt

Shift subtitles backward by 1 minute 15 seconds:

srt-time-tweaker example.srt -M 1 -S 15 --subtract -o shifted_back.srt

Shift using duration string:

srt-time-tweaker example.srt -d 00:00:05,500 -o shifted_5s_500ms.srt

Python API

Import and use srt_time_tweaker function directly in Python scripts.

from srt_time_tweaker import srt_time_tweaker as srtt

srtt(
    srt_input="example.srt",
    srt_output="output.srt",
    hours=0,
    minutes=1,
    seconds=30,
    milliseconds=250,
    duration=None,                  # Override other time params if set (format: "HH:MM:SS,ms"); Default : None
    subtract_delay=False,           # True to subtract delay; Default : False
    ignore_negative_error=False     # Ignore negative timing errors instead of raising exceptions (while subtract); Default : False
)

Function Parameters

Parameter Type Description Default
srt_input str Path to input .srt subtitle file (required)
srt_output str Path to output .srt file "output.srt"
hours int Hours to shift 0
minutes int Minutes to shift 0
seconds int Seconds to shift 0
milliseconds int Milliseconds to shift 0
duration str Time delay in HH:MM:SS,ms format (overrides hours, minutes, seconds, milliseconds) None
subtract_delay bool Subtract the delay from timestamps instead of adding True
ignore_negative_error bool Ignore negative timing errors instead of raising exceptions (while subtract) False

Example SRT

https://gist.github.com/BhagyaJyoti22006/d7b961e7a1c8b2a7708088cefd28749c

Click on the link and download the example.srt file with which the script can be tested however required. Read the example.srt file to get an overall understanding about how they work.


Notes

  • If the delay subtracts more time than the original timestamp causing negative times, by default a ValueError is raised.
  • Use ignore_negative_error=True to silently skip negative timing errors in codebase or pass --ignore-negative in CLI

License

Apache License 2.0

This library is open-source and free to use under the Apache 2.0 License.


Contributing

Contributions, suggestions, and feature requests are welcome! Feel free to submit an issue or PR.


Author

Developed by भाग्य ज्योति (Bhagya Jyoti)


Happy subtitle syncing!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

srt_time_tweaker-1.0.2.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

srt_time_tweaker-1.0.2-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file srt_time_tweaker-1.0.2.tar.gz.

File metadata

  • Download URL: srt_time_tweaker-1.0.2.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for srt_time_tweaker-1.0.2.tar.gz
Algorithm Hash digest
SHA256 dbc92e706f3089c5c8cef96a77fce6374298979b04a00583e8ef96ba2af5a16d
MD5 d4ebd7aa3c4981399e1f5a74b896f52b
BLAKE2b-256 b2ef1d9d2624516cbbc107649dec1a24faedf516884a7c72020a1ee9f8e144ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for srt_time_tweaker-1.0.2.tar.gz:

Publisher: pypi.yml on BhagyaJyoti22006/srt-time-tweaker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file srt_time_tweaker-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for srt_time_tweaker-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a8c95bab2d6d8ecca93f9f2b4004e66de92673c1ed70498e408ede7020460d24
MD5 70775031b78fc6f095f766e3a5167227
BLAKE2b-256 5d905f0bece23b5df5cf9d0d1dc922daded0a9b8e538011e6941e382250deec4

See more details on using hashes here.

Provenance

The following attestation bundles were made for srt_time_tweaker-1.0.2-py3-none-any.whl:

Publisher: pypi.yml on BhagyaJyoti22006/srt-time-tweaker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page