Skip to main content

Subtitles, faster than your thoughts

Project description

Subtitles, faster than your thoughts.

Latest Version Documentation Status Code coverage License Discord
Project page:

https://github.com/Diaoul/subliminal

Documentation:

https://subliminal.readthedocs.org/

Community:

https://discord.gg/kXW6sWte9N

Usage

Demo of the app CLI usage

CLI

Download English subtitles:

$ subliminal download -l en The.Big.Bang.Theory.S05E18.HDTV.x264-LOL.mp4
Collecting videos  [####################################]  100%
1 video collected / 0 video ignored / 0 error
Downloading subtitles  [####################################]  100%
Downloaded 1 subtitle

Configuration

Arguments can be passed to the CLI using a configuration file. By default it looks for a subliminal.toml file in the default configuration folder (see the CLI help for the exact platform-specific default path). Or use the -c option to specify the path to the configuration file.

Look for this example configuration file or use the generate_default_config function from the subliminal.cli module to generate a configuration file with all the options and their default values:

$ python -c "from subliminal.cli import generate_default_config; print(generate_default_config())"

Library

Download best subtitles in French and English for videos less than two weeks old in a video folder:

#!/usr/bin/env python

from datetime import timedelta

from babelfish import Language
from subliminal import download_best_subtitles, region, save_subtitles, scan_videos

# configure the cache
region.configure('dogpile.cache.dbm', arguments={'filename': 'cachefile.dbm'})

# scan for videos newer than 2 weeks and their existing subtitles in a folder
videos = scan_videos('/video/folder', age=timedelta(weeks=2))

# download best subtitles
subtitles = download_best_subtitles(videos, {Language('eng'), Language('fra')})

# save them to disk, next to the video
for v in videos:
    save_subtitles(v, subtitles[v])

Docker

Run subliminal in a docker container:

$ docker run --rm --name subliminal -v subliminal_cache:/usr/src/cache -v /tvshows:/tvshows -it ghcr.io/diaoul/subliminal download -l en /tvshows/The.Big.Bang.Theory.S05E18.HDTV.x264-LOL.mp4

Debugging

By default, subliminal output is minimal. Run with the –debug flag before the download command to get more information:

$ subliminal --debug download -l en The.Big.Bang.Theory.S05E18.HDTV.x264-LOL.mp4

Installation

For a better isolation with your system you should use a dedicated virtualenv. The preferred installation method is to use pipx that does that for you:

$ pipx install subliminal

Subliminal can be also be installed as a regular python module by running:

$ pip install --user subliminal

If you want to modify the code, fork this repo, clone your fork locally and install a development version:

$ git clone https://github.com/<my-username>/subliminal
$ cd subliminal
$ pip install --user -e '.[docs,types,tests,dev]'

To extract information about the video files, subliminal uses knowit. For better results, make sure one of its provider is installed, for instance MediaInfo.

Integrations

Subliminal integrates with various desktop file managers to enhance your workflow:

  • Nautilus/Nemo: See the dedicated project page for more information.

  • Dolphin: See this Gist. for more details.

Contributing

We welcome contributions from the community! If you’re interested in contributing, here are a few ways you can get involved:

  • Browse Issues and Pull Requests: Check out the existing Issues and Pull Requests to see where you can help.

  • Report Bugs or Request Features: If you encounter a bug or have a feature request, please create a GitHub Issue.

  • Follow the Contribution Guide: For detailed instructions on how to contribute, please refer to our Contribution Guide.

Your contributions are greatly appreciated and help make this project better for everyone!

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

subliminal-2.7.1.tar.gz (4.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

subliminal-2.7.1-py3-none-any.whl (123.2 kB view details)

Uploaded Python 3

File details

Details for the file subliminal-2.7.1.tar.gz.

File metadata

  • Download URL: subliminal-2.7.1.tar.gz
  • Upload date:
  • Size: 4.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for subliminal-2.7.1.tar.gz
Algorithm Hash digest
SHA256 f2649914d3067904effa2b4ce8d83aae994cd47008253311d5ae7949f467939f
MD5 dfcf06885f3c64d1f77573977f1b279e
BLAKE2b-256 9f08f602bac8c35f04021e6dfcd0bebea917cd2b57116229a74a0b97e63c72ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for subliminal-2.7.1.tar.gz:

Publisher: publish.yaml on Diaoul/subliminal

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file subliminal-2.7.1-py3-none-any.whl.

File metadata

  • Download URL: subliminal-2.7.1-py3-none-any.whl
  • Upload date:
  • Size: 123.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for subliminal-2.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a52db51fde5fbe3f7d3afa6c939bd4337a1ede610c701ee1d89a6f7a066ecd80
MD5 97080f981b41595240acc625029b6cf5
BLAKE2b-256 5f63a47a01fc3387963c28507050f7d8212a6c00fa49fcb5f5a96f6877441460

See more details on using hashes here.

Provenance

The following attestation bundles were made for subliminal-2.7.1-py3-none-any.whl:

Publisher: publish.yaml on Diaoul/subliminal

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