Skip to main content

A simple library for parsing, modifying, and composing SRT files.

Project description

Github Actions LGTM Coverage Dependencies

srt3 is a simple yet featureful Python library for parsing, modifying, and composing SRT files. Take a look at the quickstart for a basic overview of the library. Detailed API documentation is also available.

Want to see some examples of its use? Take a look at the tools shipped with the library.

Why choose this library?

  • Parses broken SRT files other libraries can’t and fixes them

  • Support for Asian-style SRT formats (ie. “fullwidth” SRT format)

  • Extremely lightweight with a Well Documented API

  • Includes tools that allow you to perform tasks using the library

  • No Dependencies outside of the Standard Library

  • High quality test suite using Hypothesis

  • ~30% faster than pysrt on typical workloads

  • 100% Unicode Compliant

  • Portable — runs on Windows, OSX, and Linux

  • Released under a highly permissive license (MIT)

Usage

Tools

There are a number of tools shipped with the library to manipulate, process, and fix SRT files. Here’s an example using hanzidentifier to strip out non-Chinese lines:

$ cat pe.srt
1
00:00:33,843 --> 00:00:38,097
Only 3% of the water on our planet is fresh.
地球上只有3%的水是淡水

2
00:00:40,641 --> 00:00:44,687
Yet, these precious waters are rich with surprise.
可是这些珍贵的淡水中却充满了惊奇

$ srt match -m hanzidentifier -fm hanzidentifier.has_chinese -i pe.srt
1
00:00:33,843 --> 00:00:38,097
地球上只有3%的水是淡水

2
00:00:40,641 --> 00:00:44,687
可是这些珍贵的淡水中却充满了惊奇

These tools are easy to chain together. For example, you have a subtitle containing Chinese and English, and another containing French. You only want Chinese French. The Chinese and English subtitle is also 5 seconds late. That’s easy enough to sort out:

$ srt match -m hanzidentifier -fm hanzidentifier.has_chinese -i chs+eng.srt |
>     srt fixed_timeshift --seconds -5 |
>     srt mux --input - --input fra.srt

See the srt/tools/ directory for more information.

Library

Detailed API documentation is available, but here are the basics:

>>> # list() is needed as srt.parse creates a generator
>>> subs = list(srt.parse('''\
... 1
... 00:00:33,843 --> 00:00:38,097
... 地球上只有3%的水是淡水
...
... 2
... 00:00:40,641 --> 00:00:44,687
... 可是这些珍贵的淡水中却充满了惊奇
...
... 3
... 00:00:57,908 --> 00:01:03,414
... 所有陆地生命归根结底都依赖於淡水
...
... '''))
>>> subs
[Subtitle(index=1, start=datetime.timedelta(0, 33, 843000), end=datetime.timedelta(0, 38, 97000), content='地球上只有3%的水是淡水', proprietary=''),
 Subtitle(index=2, start=datetime.timedelta(0, 40, 641000), end=datetime.timedelta(0, 44, 687000), content='可是这些珍贵的淡水中却充满了惊奇', proprietary=''),
 Subtitle(index=3, start=datetime.timedelta(0, 57, 908000), end=datetime.timedelta(0, 63, 414000), content='所有陆地生命归根结底都依赖於淡水', proprietary='')]
>>> print(srt.compose(subs))
1
00:00:33,843 --> 00:00:38,097
地球上只有3%的水是淡水

2
00:00:40,641 --> 00:00:44,687
可是这些珍贵的淡水中却充满了惊奇

3
00:00:57,908 --> 00:01:03,414
所有陆地生命归根结底都依赖於淡水

Installation

To install the latest stable version from PyPi:

pip install -U srt3

To install the latest development version directly from GitHub:

pip install -U git+https://github.com/switchupcb/srt3.git@develop

Contribute

You can contribute to this repository using its Contribution Guidelines.

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

srt3-1.0.1.tar.gz (22.2 kB view details)

Uploaded Source

Built Distribution

srt3-1.0.1-py3-none-any.whl (26.6 kB view details)

Uploaded Python 3

File details

Details for the file srt3-1.0.1.tar.gz.

File metadata

  • Download URL: srt3-1.0.1.tar.gz
  • Upload date:
  • Size: 22.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.1 requests/2.23.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.7.4

File hashes

Hashes for srt3-1.0.1.tar.gz
Algorithm Hash digest
SHA256 e37b394d0728a85eec3df5d6055b0d8b50d844f074eceece73f04a85bb521ada
MD5 deb6b15687830a15a5bd76b9efd0e3ca
BLAKE2b-256 9cca9f623b40fcd4a16d52ed3de08afe6c7dfb395cc1fb604ef92d444d2abcc3

See more details on using hashes here.

File details

Details for the file srt3-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: srt3-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 26.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.1 requests/2.23.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.7.4

File hashes

Hashes for srt3-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f543a7a75ff5f121e0d986fe7f0595a5cd94b16adc624e2cb8e1da5d2fb71541
MD5 c57e455c924bdd685f8dd9a6de354772
BLAKE2b-256 b45c8cec7b37d31e45b11716387c34662826418e78f0b599435b233598c7a72a

See more details on using hashes here.

Supported by

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