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.0.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.0-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: srt_time_tweaker-1.0.0.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.0.tar.gz
Algorithm Hash digest
SHA256 6d507791a39a360595b3469da44875e80b61521bdc81f6c7d1e4eacc007e2742
MD5 7b8f212f550b2dec5a1d16ff1d6537ad
BLAKE2b-256 9bb7081f48ed003d2a9f1bbe7055ffae21a77a45b8b64e7fa2205701ea47f7ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for srt_time_tweaker-1.0.0.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.0-py3-none-any.whl.

File metadata

File hashes

Hashes for srt_time_tweaker-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c8f4121c788abd3fbd0a168af81e054dea821bf3e7e92a5907f6678ec6c4e65f
MD5 b6a127239788c2f7ea1bf06d59c024cf
BLAKE2b-256 0bbafc93a3c2382de9d9dc57934ed13b7f4f4ee1e137ea6f4cea3fc62718938e

See more details on using hashes here.

Provenance

The following attestation bundles were made for srt_time_tweaker-1.0.0-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