Providers

class subliminal.providers.TimeoutSafeTransport(timeout, *args, **kwargs)[source]

Timeout support for xmlrpc.client.SafeTransport.

class subliminal.providers.ParserBeautifulSoup(markup, parsers, **kwargs)[source]

A bs4.BeautifulSoup that picks the first parser available in parsers.

Parameters:
  • markup – markup for the bs4.BeautifulSoup.
  • parsers (list) – parser names, in order of preference.
class subliminal.providers.Provider[source]

Base class for providers.

If any configuration is possible for the provider, like credentials, it must take place during instantiation.

Raise:ConfigurationError if there is a configuration error
languages = set([])

Supported set of Language

video_types = (<class 'subliminal.video.Episode'>, <class 'subliminal.video.Movie'>)

Supported video types

required_hash = None

Required hash, if any

subtitle_class = None

Subtitle class to use

initialize()[source]

Initialize the provider.

Must be called when starting to work with the provider. This is the place for network initialization or login operations.

Note

This is called automatically when entering the with statement

terminate()[source]

Terminate the provider.

Must be called when done with the provider. This is the place for network shutdown or logout operations.

Note

This is called automatically when exiting the with statement

classmethod check(video)[source]

Check if the video can be processed.

The video is considered invalid if not an instance of video_types or if the required_hash is not present in hashes attribute of the video.

Parameters:video (Video) – the video to check.
Returns:True if the video is valid, False otherwise.
Return type:bool
query(*args, **kwargs)[source]

Query the provider for subtitles.

Arguments should match as much as possible the actual parameters for querying the provider

Returns:found subtitles.
Return type:list of Subtitle
Raise:ProviderError
list_subtitles(video, languages)[source]

List subtitles for the video with the given languages.

This will call the query() method internally. The parameters passed to the query() method may vary depending on the amount of information available in the video.

Parameters:
  • video (Video) – video to list subtitles for.
  • languages (set of Language) – languages to search for.
Returns:

found subtitles.

Return type:

list of Subtitle

Raise:

ProviderError

download_subtitle(subtitle)[source]

Download subtitle’s content.

Parameters:subtitle (Subtitle) – subtitle to download.
Raise:ProviderError

Addic7ed

subliminal.providers.addic7ed.series_year_re = <_sre.SRE_Pattern object>

Series header parsing regex

class subliminal.providers.addic7ed.Addic7edSubtitle(language, hearing_impaired, page_link, series, season, episode, title, year, version, download_link)[source]

Addic7ed Subtitle.

get_matches(video)[source]

Get the matches against the video.

Parameters:video (Video) – the video to get the matches with.
Returns:matches of the subtitle.
Return type:set
class subliminal.providers.addic7ed.Addic7edProvider(username=None, password=None)[source]

Addic7ed Provider.

subtitle_class

alias of Addic7edSubtitle

initialize()[source]

Initialize the provider.

Must be called when starting to work with the provider. This is the place for network initialization or login operations.

Note

This is called automatically when entering the with statement

terminate()[source]

Terminate the provider.

Must be called when done with the provider. This is the place for network shutdown or logout operations.

Note

This is called automatically when exiting the with statement

_get_show_ids(**kw)[source]

Get the dict of show ids per series by querying the shows.php page.

Returns:show id per series, lower case and without quotes.
Return type:dict
_search_show_id(**kw)[source]

Search the show id from the series and year.

Parameters:
  • series (str) – series of the episode.
  • year (int) – year of the series, if any.
Returns:

the show id, if found.

Return type:

int

get_show_id(series, year=None, country_code=None)[source]

Get the best matching show id for series, year and country_code.

First search in the result of _get_show_ids() and fallback on a search with _search_show_id().

Parameters:
  • series (str) – series of the episode.
  • year (int) – year of the series, if any.
  • country_code (str) – country code of the series, if any.
Returns:

the show id, if found.

Return type:

int

query(show_id, series, season, year=None, country=None)[source]

Query the provider for subtitles.

Arguments should match as much as possible the actual parameters for querying the provider

Returns:found subtitles.
Return type:list of Subtitle
Raise:ProviderError
list_subtitles(video, languages)[source]

List subtitles for the video with the given languages.

This will call the query() method internally. The parameters passed to the query() method may vary depending on the amount of information available in the video.

Parameters:
  • video (Video) – video to list subtitles for.
  • languages (set of Language) – languages to search for.
Returns:

found subtitles.

Return type:

list of Subtitle

Raise:

ProviderError

download_subtitle(subtitle)[source]

Download subtitle’s content.

Parameters:subtitle (Subtitle) – subtitle to download.
Raise:ProviderError

LegendasTv

subliminal.providers.legendastv.type_map = {'C': 'episode', 'M': 'movie', 'S': 'episode'}

Conversion map for types

subliminal.providers.legendastv.season_re = <_sre.SRE_Pattern object at 0x3248630>

BR title season parsing regex

subliminal.providers.legendastv.downloads_re = <_sre.SRE_Pattern object>

Downloads parsing regex

subliminal.providers.legendastv.rating_re = <_sre.SRE_Pattern object>

Rating parsing regex

subliminal.providers.legendastv.timestamp_re = <_sre.SRE_Pattern object>

Timestamp parsing regex

subliminal.providers.legendastv.title_re = <_sre.SRE_Pattern object>

Title with year/country regex

subliminal.providers.legendastv.releases_key = 'subliminal.providers.legendastv:releases|{archive_id}|{archive_name}'

Cache key for releases

class subliminal.providers.legendastv.LegendasTVArchive(id, name, pack, featured, link, downloads=0, rating=0, timestamp=None)[source]

LegendasTV Archive.

Parameters:
  • id (str) – identifier.
  • name (str) – name.
  • pack (bool) – contains subtitles for multiple episodes.
  • pack – featured.
  • link (str) – link.
  • downloads (int) – download count.
  • rating (int) – rating (0-10).
  • timestamp (datetime.datetime) – timestamp.
id = None

Identifier

name = None

Name

pack = None

Pack

featured = None

Featured

Link

downloads = None

Download count

rating = None

Rating (0-10)

timestamp = None

Timestamp

content = None

Compressed content as rarfile.RarFile or zipfile.ZipFile

class subliminal.providers.legendastv.LegendasTVSubtitle(language, type, title, year, imdb_id, season, archive, name)[source]

LegendasTV Subtitle.

get_matches(video, hearing_impaired=False)[source]

Get the matches against the video.

Parameters:video (Video) – the video to get the matches with.
Returns:matches of the subtitle.
Return type:set
class subliminal.providers.legendastv.LegendasTVProvider(username=None, password=None)[source]

LegendasTV Provider.

Parameters:
  • username (str) – username.
  • password (str) – password.
subtitle_class

alias of LegendasTVSubtitle

initialize()[source]

Initialize the provider.

Must be called when starting to work with the provider. This is the place for network initialization or login operations.

Note

This is called automatically when entering the with statement

terminate()[source]

Terminate the provider.

Must be called when done with the provider. This is the place for network shutdown or logout operations.

Note

This is called automatically when exiting the with statement

static is_valid_title(title, title_id, sanitized_title, season, year)[source]

Check if is a valid title.

search_titles(**kw)[source]

Search for titles matching the title.

For episodes, each season has it own title :param str title: the title to search for. :param int season: season of the title :param int title_year: year of the title :return: found titles. :rtype: dict

get_archives(**kw)[source]

Get the archive list from a given title_id, language_code, title_type, season and episode.

Parameters:
  • title_id (int) – title id.
  • language_code (int) – language code.
  • title_type (str) – episode or movie
  • season (int) – season
  • episode (int) – episode
Returns:

the archives.

Return type:

list of LegendasTVArchive

download_archive(archive)[source]

Download an archive’s content.

Parameters:archive (LegendasTVArchive) – the archive to download content of.
query(language, title, season=None, episode=None, year=None)[source]

Query the provider for subtitles.

Arguments should match as much as possible the actual parameters for querying the provider

Returns:found subtitles.
Return type:list of Subtitle
Raise:ProviderError
list_subtitles(video, languages)[source]

List subtitles for the video with the given languages.

This will call the query() method internally. The parameters passed to the query() method may vary depending on the amount of information available in the video.

Parameters:
  • video (Video) – video to list subtitles for.
  • languages (set of Language) – languages to search for.
Returns:

found subtitles.

Return type:

list of Subtitle

Raise:

ProviderError

download_subtitle(subtitle)[source]

Download subtitle’s content.

Parameters:subtitle (Subtitle) – subtitle to download.
Raise:ProviderError

NapiProjekt

subliminal.providers.napiprojekt.get_subhash(hash)[source]

Get a second hash based on napiprojekt’s hash.

Parameters:hash (str) – napiprojekt’s hash.
Returns:the subhash.
Return type:str
class subliminal.providers.napiprojekt.NapiProjektSubtitle(language, hash)[source]

NapiProjekt Subtitle.

get_matches(video)[source]

Get the matches against the video.

Parameters:video (Video) – the video to get the matches with.
Returns:matches of the subtitle.
Return type:set
class subliminal.providers.napiprojekt.NapiProjektProvider[source]

NapiProjekt Provider.

subtitle_class

alias of NapiProjektSubtitle

initialize()[source]

Initialize the provider.

Must be called when starting to work with the provider. This is the place for network initialization or login operations.

Note

This is called automatically when entering the with statement

terminate()[source]

Terminate the provider.

Must be called when done with the provider. This is the place for network shutdown or logout operations.

Note

This is called automatically when exiting the with statement

query(language, hash)[source]

Query the provider for subtitles.

Arguments should match as much as possible the actual parameters for querying the provider

Returns:found subtitles.
Return type:list of Subtitle
Raise:ProviderError
list_subtitles(video, languages)[source]

List subtitles for the video with the given languages.

This will call the query() method internally. The parameters passed to the query() method may vary depending on the amount of information available in the video.

Parameters:
  • video (Video) – video to list subtitles for.
  • languages (set of Language) – languages to search for.
Returns:

found subtitles.

Return type:

list of Subtitle

Raise:

ProviderError

download_subtitle(subtitle)[source]

Download subtitle’s content.

Parameters:subtitle (Subtitle) – subtitle to download.
Raise:ProviderError

OpenSubtitles

class subliminal.providers.opensubtitles.OpenSubtitlesSubtitle(language, hearing_impaired, page_link, subtitle_id, matched_by, movie_kind, hash, movie_name, movie_release_name, movie_year, movie_imdb_id, series_season, series_episode, filename, encoding)[source]

OpenSubtitles Subtitle.

get_matches(video)[source]

Get the matches against the video.

Parameters:video (Video) – the video to get the matches with.
Returns:matches of the subtitle.
Return type:set
class subliminal.providers.opensubtitles.OpenSubtitlesProvider(username=None, password=None)[source]

OpenSubtitles Provider.

Parameters:
  • username (str) – username.
  • password (str) – password.
subtitle_class

alias of OpenSubtitlesSubtitle

initialize()[source]

Initialize the provider.

Must be called when starting to work with the provider. This is the place for network initialization or login operations.

Note

This is called automatically when entering the with statement

terminate()[source]

Terminate the provider.

Must be called when done with the provider. This is the place for network shutdown or logout operations.

Note

This is called automatically when exiting the with statement

query(languages, hash=None, size=None, imdb_id=None, query=None, season=None, episode=None, tag=None)[source]

Query the provider for subtitles.

Arguments should match as much as possible the actual parameters for querying the provider

Returns:found subtitles.
Return type:list of Subtitle
Raise:ProviderError
list_subtitles(video, languages)[source]

List subtitles for the video with the given languages.

This will call the query() method internally. The parameters passed to the query() method may vary depending on the amount of information available in the video.

Parameters:
  • video (Video) – video to list subtitles for.
  • languages (set of Language) – languages to search for.
Returns:

found subtitles.

Return type:

list of Subtitle

Raise:

ProviderError

download_subtitle(subtitle)[source]

Download subtitle’s content.

Parameters:subtitle (Subtitle) – subtitle to download.
Raise:ProviderError
exception subliminal.providers.opensubtitles.OpenSubtitlesError[source]

Base class for non-generic OpenSubtitlesProvider exceptions.

exception subliminal.providers.opensubtitles.Unauthorized[source]

Exception raised when status is ‘401 Unauthorized’.

exception subliminal.providers.opensubtitles.NoSession[source]

Exception raised when status is ‘406 No session’.

exception subliminal.providers.opensubtitles.DownloadLimitReached[source]

Exception raised when status is ‘407 Download limit reached’.

exception subliminal.providers.opensubtitles.InvalidImdbid[source]

Exception raised when status is ‘413 Invalid ImdbID’.

exception subliminal.providers.opensubtitles.UnknownUserAgent[source]

Exception raised when status is ‘414 Unknown User Agent’.

exception subliminal.providers.opensubtitles.DisabledUserAgent[source]

Exception raised when status is ‘415 Disabled user agent’.

subliminal.providers.opensubtitles.checked(response)[source]

Check a response status before returning it.

Parameters:response – a response from a XMLRPC call to OpenSubtitles.
Returns:the response.
Raise:OpenSubtitlesError

Podnapisi

class subliminal.providers.podnapisi.PodnapisiSubtitle(language, hearing_impaired, page_link, pid, releases, title, season=None, episode=None, year=None)[source]

Podnapisi Subtitle.

get_matches(video)[source]

Get the matches against the video.

Parameters:video (Video) – the video to get the matches with.
Returns:matches of the subtitle.
Return type:set
class subliminal.providers.podnapisi.PodnapisiProvider[source]

Podnapisi Provider.

subtitle_class

alias of PodnapisiSubtitle

initialize()[source]

Initialize the provider.

Must be called when starting to work with the provider. This is the place for network initialization or login operations.

Note

This is called automatically when entering the with statement

terminate()[source]

Terminate the provider.

Must be called when done with the provider. This is the place for network shutdown or logout operations.

Note

This is called automatically when exiting the with statement

query(language, keyword, season=None, episode=None, year=None)[source]

Query the provider for subtitles.

Arguments should match as much as possible the actual parameters for querying the provider

Returns:found subtitles.
Return type:list of Subtitle
Raise:ProviderError
list_subtitles(video, languages)[source]

List subtitles for the video with the given languages.

This will call the query() method internally. The parameters passed to the query() method may vary depending on the amount of information available in the video.

Parameters:
  • video (Video) – video to list subtitles for.
  • languages (set of Language) – languages to search for.
Returns:

found subtitles.

Return type:

list of Subtitle

Raise:

ProviderError

download_subtitle(subtitle)[source]

Download subtitle’s content.

Parameters:subtitle (Subtitle) – subtitle to download.
Raise:ProviderError

Shooter

class subliminal.providers.shooter.ShooterSubtitle(language, hash, download_link)[source]

Shooter Subtitle.

get_matches(video)[source]

Get the matches against the video.

Parameters:video (Video) – the video to get the matches with.
Returns:matches of the subtitle.
Return type:set
class subliminal.providers.shooter.ShooterProvider[source]

Shooter Provider.

subtitle_class

alias of ShooterSubtitle

initialize()[source]

Initialize the provider.

Must be called when starting to work with the provider. This is the place for network initialization or login operations.

Note

This is called automatically when entering the with statement

terminate()[source]

Terminate the provider.

Must be called when done with the provider. This is the place for network shutdown or logout operations.

Note

This is called automatically when exiting the with statement

query(language, filename, hash=None)[source]

Query the provider for subtitles.

Arguments should match as much as possible the actual parameters for querying the provider

Returns:found subtitles.
Return type:list of Subtitle
Raise:ProviderError
list_subtitles(video, languages)[source]

List subtitles for the video with the given languages.

This will call the query() method internally. The parameters passed to the query() method may vary depending on the amount of information available in the video.

Parameters:
  • video (Video) – video to list subtitles for.
  • languages (set of Language) – languages to search for.
Returns:

found subtitles.

Return type:

list of Subtitle

Raise:

ProviderError

download_subtitle(subtitle)[source]

Download subtitle’s content.

Parameters:subtitle (Subtitle) – subtitle to download.
Raise:ProviderError

TheSubDB

class subliminal.providers.thesubdb.TheSubDBSubtitle(language, hash)[source]

TheSubDB Subtitle.

get_matches(video)[source]

Get the matches against the video.

Parameters:video (Video) – the video to get the matches with.
Returns:matches of the subtitle.
Return type:set
class subliminal.providers.thesubdb.TheSubDBProvider[source]

TheSubDB Provider.

subtitle_class

alias of TheSubDBSubtitle

initialize()[source]

Initialize the provider.

Must be called when starting to work with the provider. This is the place for network initialization or login operations.

Note

This is called automatically when entering the with statement

terminate()[source]

Terminate the provider.

Must be called when done with the provider. This is the place for network shutdown or logout operations.

Note

This is called automatically when exiting the with statement

query(hash)[source]

Query the provider for subtitles.

Arguments should match as much as possible the actual parameters for querying the provider

Returns:found subtitles.
Return type:list of Subtitle
Raise:ProviderError
list_subtitles(video, languages)[source]

List subtitles for the video with the given languages.

This will call the query() method internally. The parameters passed to the query() method may vary depending on the amount of information available in the video.

Parameters:
  • video (Video) – video to list subtitles for.
  • languages (set of Language) – languages to search for.
Returns:

found subtitles.

Return type:

list of Subtitle

Raise:

ProviderError

download_subtitle(subtitle)[source]

Download subtitle’s content.

Parameters:subtitle (Subtitle) – subtitle to download.
Raise:ProviderError

TVsubtitles

class subliminal.providers.tvsubtitles.TVsubtitlesSubtitle(language, page_link, subtitle_id, series, season, episode, year, rip, release)[source]

TVsubtitles Subtitle.

get_matches(video)[source]

Get the matches against the video.

Parameters:video (Video) – the video to get the matches with.
Returns:matches of the subtitle.
Return type:set
class subliminal.providers.tvsubtitles.TVsubtitlesProvider[source]

TVsubtitles Provider.

subtitle_class

alias of TVsubtitlesSubtitle

initialize()[source]

Initialize the provider.

Must be called when starting to work with the provider. This is the place for network initialization or login operations.

Note

This is called automatically when entering the with statement

terminate()[source]

Terminate the provider.

Must be called when done with the provider. This is the place for network shutdown or logout operations.

Note

This is called automatically when exiting the with statement

search_show_id(**kw)[source]

Search the show id from the series and year.

Parameters:
  • series (str) – series of the episode.
  • year (int) – year of the series, if any.
Returns:

the show id, if any.

Return type:

int

get_episode_ids(**kw)[source]

Get episode ids from the show id and the season.

Parameters:
  • show_id (int) – show id.
  • season (int) – season of the episode.
Returns:

episode ids per episode number.

Return type:

dict

query(show_id, series, season, episode, year=None)[source]

Query the provider for subtitles.

Arguments should match as much as possible the actual parameters for querying the provider

Returns:found subtitles.
Return type:list of Subtitle
Raise:ProviderError
list_subtitles(video, languages)[source]

List subtitles for the video with the given languages.

This will call the query() method internally. The parameters passed to the query() method may vary depending on the amount of information available in the video.

Parameters:
  • video (Video) – video to list subtitles for.
  • languages (set of Language) – languages to search for.
Returns:

found subtitles.

Return type:

list of Subtitle

Raise:

ProviderError

download_subtitle(subtitle)[source]

Download subtitle’s content.

Parameters:subtitle (Subtitle) – subtitle to download.
Raise:ProviderError