Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/byroot/pysrt
Python parser for SubRip (srt) files
https://github.com/byroot/pysrt
python subtitles-parsing
Last synced: about 10 hours 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 (about 15 years ago)
- Default Branch: master
- Last Pushed: 2023-05-09T12:51:04.000Z (over 1 year ago)
- Last Synced: 2024-12-20T08:05:24.811Z (7 days ago)
- Topics: python, subtitles-parsing
- Language: Python
- Homepage:
- Size: 263 KB
- Stars: 454
- Watchers: 16
- Forks: 68
- Open Issues: 28
-
Metadata Files:
- Readme: README.rst
Awesome Lists containing this project
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.srtSpliting: ::
$ 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')