https://github.com/byroot/pysrt
Python parser for SubRip (srt) files
https://github.com/byroot/pysrt
python subtitles-parsing
Last synced: about 1 year ago
JSON representation
Python parser for SubRip (srt) files
- Host: GitHub
- URL: https://github.com/byroot/pysrt
- Owner: byroot
- License: gpl-3.0
- Created: 2009-10-19T19:50:49.000Z (over 16 years ago)
- Default Branch: master
- Last Pushed: 2023-05-09T12:51:04.000Z (about 3 years ago)
- Last Synced: 2025-04-14T05:56:45.868Z (about 1 year ago)
- Topics: python, subtitles-parsing
- Language: Python
- Homepage:
- Size: 263 KB
- Stars: 467
- Watchers: 15
- Forks: 69
- Open Issues: 29
-
Metadata Files:
- Readme: README.rst
Awesome Lists containing this project
- awesome-video - pysrt - A Python library for parsing, modifying, and composing SubRip (SRT) files. It provides developers with tools to handle subtitle files programmatically, enabling tasks such as reading, writing, and editing subtitles within Python applications. (Media Tools / Independent & Hobbyist Projects)
README
pysrt
=============
pysrt is a Python library used to edit or create SubRip files.
.. image:: https://secure.travis-ci.org/byroot/pysrt.png?branch=master
:target: http://travis-ci.org/byroot/pysrt
.. image:: https://coveralls.io/repos/byroot/pysrt/badge.png?branch=master
:target: https://coveralls.io/r/byroot/pysrt?branch=master
.. image:: https://img.shields.io/pypi/v/pysrt.svg
:target: https://crate.io/packages/pysrt/
Foreword
====================
pysrt is mainly designed as a library, but if you are experiencing troubles
with bad subtitles you can first try to use `ruby-osdb `_
which will try to find the best subtitle for your movie. If you are still unlucky
pysrt also provide an ``srt`` command useful for either shift, split, or rescale a
*.srt* file.
Command Usage
=====================
Shifting: ::
$ srt -i shift 2s500ms movie.srt
Spliting: ::
$ srt split 58m26s movie.srt
Rescaling: ::
$ srt -i rate 23.9 25 movie.srt
Installation
=================
pysrt is available on pypi. To install it you can use either
pip: ::
$ sudo pip install pysrt
or distutils: ::
$ sudo easy_install pysrt
It is compatible with python >= 2.6 and 3.
Library Usage
=============
Import: ::
>>> import pysrt
Parsing: ::
>>> subs = pysrt.open('some/file.srt')
# If you get a UnicodeDecodeError try to specify the encoding
>>> subs = pysrt.open('some/file.srt', encoding='iso-8859-1')
SubRipFile are list-like objects of SubRipItem instances: ::
>>> len(subs)
>>> first_sub = subs[0]
SubRipItem instances are editable just like pure Python objects: ::
>>> first_sub.text = "Hello World !"
>>> first_sub.start.seconds = 20
>>> first_sub.end.minutes = 5
Shifting: ::
>>> subs.shift(seconds=-2) # Move all subs 2 seconds earlier
>>> subs.shift(minutes=1) # Move all subs 1 minutes later
>>> subs.shift(ratio=25/23.9) # convert a 23.9 fps subtitle in 25 fps
>>> first_sub.shift(seconds=1) # Move the first sub 1 second later
>>> first_sub.start += {'seconds': -1} # Make the first sub start 1 second earlier
Removing: ::
>>> del subs[12]
Slicing: ::
>>> part = subs.slice(starts_after={'minutes': 2, 'seconds': 30}, ends_before={'minutes': 3, 'seconds': 40})
>>> part.shift(seconds=-2)
Saving changes: ::
>>> subs.save('other/path.srt', encoding='utf-8')