Skip to content

Conversation

@lndgalante
Copy link

@lndgalante lndgalante commented Jan 8, 2026

Summary

@Nyaran requested support for Subtis in the following issue comment.

This PR adds a new provider for Subtis, a Spanish subtitle search service for movies.

Features

  • Search by file size + filename (exact match)
  • Fallback to filename-only search (fuzzy match)
  • Spanish language subtitles only
  • Movies only (no TV shows)

Changes

  • New provider: SubtisProvider
  • Tests with VCR cassettes
  • Entry point in pyproject.toml

Test Plan

# Install in dev mode
pip install -e .

# Run tests
pytest tests/providers/test_subtis.py -v

# Test with a real file (example)
subliminal download -l es -p subtis "One.Battle.After.Another.2025.2160p.4K.WEB.x265.10bit.AAC5.1-[YTS.MX].mkv"

Expected output:
Collecting videos  [####################################]  100%
0 video collected / 1 video ignored / 0 error

Screenshots

1 2 3

@getzze
Copy link
Collaborator

getzze commented Jan 8, 2026

Thanks @lndgalante for the PR!
@Nyaran can you help reviewing it?

@lndgalante
Copy link
Author

Thanks @lndgalante for the PR! @Nyaran can you help reviewing it?

Sure, let me know if there's any other way we can help pushing it!

@github-actions
Copy link
Contributor

github-actions bot commented Jan 8, 2026

Coverage report

Click to see where and how coverage changed

FileStatementsMissingCoverageCoverage
(new stmts)
Lines missing
  src/subliminal/providers
  subtis.py 115-117, 124-127, 131-134, 144, 148, 158, 228-230, 233-234
Project Total  

This report was generated by python-coverage-comment-action

@Nyaran
Copy link
Contributor

Nyaran commented Jan 8, 2026

Hi!

I tried the branch from this PR, and is not working for me:

With the movie "The Avengers":

subliminal --debug download -f -l es . -p subtis -r metadata .
INFO:subliminal.cli.cli:Not using any configuration file, not a file '[REDACTED]/.config/subliminal/subliminal.toml'
INFO:subliminal.cli.commands.download_best:Download with subliminal version 0.1.dev1407+g3657002e8
INFO:subliminal.cli.commands.download_best:Use providers: ['subtis']
INFO:subliminal.cli.commands.download_best:Use refiners: ['metadata']
Collecting videos  [------------------------------------]    0%  .
DEBUG:subliminal.cli.commands.download_best:Collecting path .
DEBUG:subliminal.core:Walking directory '.'
INFO:subliminal.core:Scanning video './The Avengers.mkv'
DEBUG:subliminal.core:Size is 6649323757
INFO:subliminal.core:Refining video with metadata
DEBUG:subliminal.refiners.metadata:Retrieving metadata from './The Avengers.mkv'
DEBUG:subliminal.refiners.metadata:Using provider {'name': 'mediainfo', 'version': {'pymediainfo': '7.0.1', 'libmediainfo.so.0': 'v25.10'}}
DEBUG:subliminal.refiners.metadata:Found duration 8574.91
DEBUG:subliminal.refiners.metadata:Found resolution 1080p
DEBUG:subliminal.refiners.metadata:Found frame_rate 23.98
DEBUG:subliminal.refiners.metadata:Found video_codec H.264
DEBUG:subliminal.refiners.metadata:Found audio_codec AC-3
Collecting videos  [##################------------------]   50%  00:00:01  .
DEBUG:subliminal.cli.commands.download_best:Collecting path .
DEBUG:subliminal.core:Walking directory '.'
INFO:subliminal.core:Scanning video './The Avengers.mkv'
DEBUG:subliminal.core:Size is 6649323757
INFO:subliminal.core:Refining video with metadata
DEBUG:subliminal.refiners.metadata:Retrieving metadata from './The Avengers.mkv'
DEBUG:subliminal.refiners.metadata:Using provider {'name': 'mediainfo', 'version': {'pymediainfo': '7.0.1', 'libmediainfo.so.0': 'v25.10'}}
DEBUG:subliminal.refiners.metadata:Found duration 8574.91
DEBUG:subliminal.refiners.metadata:Found resolution 1080p
DEBUG:subliminal.refiners.metadata:Found frame_rate 23.98
DEBUG:subliminal.refiners.metadata:Found video_codec H.264
DEBUG:subliminal.refiners.metadata:Found audio_codec AC-3
Collecting videos  [####################################]  100%             
2 videos collected / 0 video ignored / 0 error
Downloading subtitles  [------------------------------------]    0%  The Avengers.mkv
INFO:subliminal.core:Listing subtitles with provider 'subtis' and languages {<Language [es]>}
INFO:subliminal.core:Initializing provider subtis
INFO:subliminal.providers.subtis:Searching subtitles (primary) for The Avengers.mkv
INFO:subliminal.providers.subtis:Searching subtitles (alternative) for The Avengers.mkv
INFO:subliminal.providers.subtis:No subtitle found for The Avengers.mkv
Downloading subtitles  [##################------------------]   50%  The Avengers.mkv
INFO:subliminal.core:Listing subtitles with provider 'subtis' and languages {<Language [es]>}
INFO:subliminal.providers.subtis:Searching subtitles (primary) for The Avengers.mkv
INFO:subliminal.providers.subtis:Searching subtitles (alternative) for The Avengers.mkv
INFO:subliminal.providers.subtis:No subtitle found for The Avengers.mkv
Downloading subtitles  [####################################]  100%                  
DEBUG:subliminal.core:Terminating initialized providers
INFO:subliminal.core:Terminating provider subtis
0 subtitle downloaded for The Avengers.mkv
0 subtitle downloaded for The Avengers.mkv

@lndgalante
Copy link
Author

DEBUG:subliminal.core:Size is 6649323757
INFO:subliminal.core:Refining video with metadata
DEBUG:subliminal.refiners.metadata:Retrieving metadata from './The Avengers.mkv'
DEBUG:subliminal.refiners.metadata:Using provider {'name': 'mediainfo', 'version': {'pymediainfo': '7.0.1', 'libmediainfo.so.0': 'v25.10'}}
DEBUG:subliminal.refiners.metadata:Found duration 8574.91

That's probably correct @Nyaran but because we don't have that specific version. Showing a working example:

Avengers Endgame movie:
https://subtis.io/subtitles/movie/avengers-endgame-2019

Specific subtitle version (YTS 1080P):
https://subtis.io/subtitle/file/name/3234022377/Avengers.Endgame.2019.1080p.BluRay.x264-[YTS.LT].mp4

Let's use that as an example 👇
You can do touch "Avengers.Endgame.2019.1080p.BluRay.x264-[YTS.LT].mp4" and then run your same command: subliminal --debug download -f -l es . -p subtis -r metadata .

If you want to test search by bytes you will have to get that movie file, and you can change the name to anything.mkv and will search it by bytes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants