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,msformat - 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
ValueErroris raised. - Use
ignore_negative_error=Trueto silently skip negative timing errors in codebase or pass--ignore-negativein 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file srt_time_tweaker-1.0.1.tar.gz.
File metadata
- Download URL: srt_time_tweaker-1.0.1.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d48b57a66a06c6165a8c180048937dbc688ae4f8d032601410ab790ee53b27fc
|
|
| MD5 |
21f26879324faffe24de331abfc2fc04
|
|
| BLAKE2b-256 |
617dd6350c37495be2469cd4b54408d3b19c9cd34af800701ae332721563c197
|
Provenance
The following attestation bundles were made for srt_time_tweaker-1.0.1.tar.gz:
Publisher:
pypi.yml on BhagyaJyoti22006/srt-time-tweaker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
srt_time_tweaker-1.0.1.tar.gz -
Subject digest:
d48b57a66a06c6165a8c180048937dbc688ae4f8d032601410ab790ee53b27fc - Sigstore transparency entry: 230542695
- Sigstore integration time:
-
Permalink:
BhagyaJyoti22006/srt-time-tweaker@d4965f08438efcc6396297bb71fd8852963f58db -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/BhagyaJyoti22006
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@d4965f08438efcc6396297bb71fd8852963f58db -
Trigger Event:
release
-
Statement type:
File details
Details for the file srt_time_tweaker-1.0.1-py3-none-any.whl.
File metadata
- Download URL: srt_time_tweaker-1.0.1-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
470b63c35c14f630a7f600e83cb27ad707e87a00eeb4b3f867783c17d6dc0a9f
|
|
| MD5 |
69584fbe375f36e661f9ac0ea9822d32
|
|
| BLAKE2b-256 |
39b0adc397272ef87d40994c1c99aa6bd869afdd57713d4f331dbbb42a7b5e5d
|
Provenance
The following attestation bundles were made for srt_time_tweaker-1.0.1-py3-none-any.whl:
Publisher:
pypi.yml on BhagyaJyoti22006/srt-time-tweaker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
srt_time_tweaker-1.0.1-py3-none-any.whl -
Subject digest:
470b63c35c14f630a7f600e83cb27ad707e87a00eeb4b3f867783c17d6dc0a9f - Sigstore transparency entry: 230542696
- Sigstore integration time:
-
Permalink:
BhagyaJyoti22006/srt-time-tweaker@d4965f08438efcc6396297bb71fd8852963f58db -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/BhagyaJyoti22006
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@d4965f08438efcc6396297bb71fd8852963f58db -
Trigger Event:
release
-
Statement type: