1SUBLIMINAL(1) subliminal SUBLIMINAL(1)
2
3
4
6 subliminal - subliminal Documentation
7
8 Subliminal is a python 2.7+ library to search and download subtitles.
9 It comes with an easy to use yet powerful CLI suitable for direct use
10 or cron jobs.
11
13 Usage
14 CLI
15 Download English subtitles:
16
17 $ subliminal download -l en The.Big.Bang.Theory.S05E18.HDTV.x264-LOL.mp4
18 Collecting videos [####################################] 100%
19 1 video collected / 0 video ignored
20 Downloading subtitles [####################################] 100%
21 Downloaded 1 subtitle
22
23 WARNING:
24 For cron usage, make sure to specify a maximum age (with --age) so
25 subtitles are searched for recent videos only. Otherwise you will
26 get banned from the providers for abuse due to too many requests. If
27 subliminal didn’t find subtitles for an old video, it’s unlikely it
28 will find subtitles for that video ever anyway.
29
30 See cli for more details on the available commands and options.
31
32 Nautilus/Nemo integration
33 See the dedicated project page for more information.
34
35 High level API
36 You can call subliminal in many different ways depending on how much
37 control you want over the process. For most use cases, you can stick to
38 the standard API.
39
40 Common
41 Let’s start by importing subliminal:
42
43 >>> import os
44 >>> from babelfish import *
45 >>> from subliminal import *
46
47 Before going further, there are a few things to know about subliminal.
48
49 Video
50 The Movie and Episode classes represent a video, existing or not. You
51 can create a video by name (or path) with Video.fromname, use
52 scan_video() on an existing file path to get even more information
53 about the video or use scan_videos() on an existing directory path to
54 scan a whole directory for videos.
55
56 >>> video = Video.fromname('The.Big.Bang.Theory.S05E18.HDTV.x264-LOL.mp4')
57 >>> video
58 <Episode ['The Big Bang Theory', 5x18]>
59
60 Here video information was guessed based on the name of the video, you
61 can access some video attributes:
62
63 >>> video.video_codec
64 'h264'
65 >>> video.release_group
66 'LOL'
67
68 Configuration
69 Before proceeding to listing and downloading subtitles, you need to
70 configure the cache. Subliminal uses a cache to reduce repeated queries
71 to providers and improve overall performance with no impact on search
72 quality. For the sake of this example, we’re going to use a memory
73 backend.
74
75 >>> my_region = region.configure('dogpile.cache.memory')
76
77 WARNING:
78 Choose a cache that fits your application and prefer persistent over
79 volatile backends. The file backend is usually a good choice. See
80 dogpile.cache’s documentation for more details on backends.
81
82 Now that we’re done with the basics, let’s have some real fun.
83
84 Listing
85 To list subtitles, subliminal provides a list_subtitles() function that
86 will return all found subtitles:
87
88 >>> subtitles = list_subtitles([video], {Language('hun')}, providers=['podnapisi'])
89 >>> subtitles[video]
90 [<PodnapisiSubtitle 'ZtAW' [hu]>, <PodnapisiSubtitle 'ONAW' [hu]>]
91
92 NOTE:
93 As you noticed, all parameters are iterables but only contain one
94 item which means you can deal with a lot of videos, languages and
95 providers at the same time. For the sake of this example, we filter
96 providers to use only one, pass providers=None (default) to search
97 on all providers.
98
99 Scoring
100 It’s usual you have multiple candidates for subtitles. To help you
101 chose which one to download, subliminal can compare them to the video
102 and tell you exactly what matches with get_matches():
103
104 >>> for s in subtitles[video]:
105 ... sorted(s.get_matches(video))
106 ['episode', 'format', 'release_group', 'season', 'series', 'video_codec', 'year']
107 ['episode', 'format', 'season', 'series', 'year']
108
109 And then compute a score with those matches with compute_score():
110
111 >>> for s in subtitles[video]:
112 ... {s: compute_score(s, video)}
113 {<PodnapisiSubtitle 'ZtAW' [hu]>: 354}
114 {<PodnapisiSubtitle 'ONAW' [hu]>: 337}
115
116 Now you should have a better idea about which one you should choose.
117
118 Downloading
119 We can settle on the first subtitle and download its content using
120 download_subtitles():
121
122 >>> subtitle = subtitles[video][0]
123 >>> subtitle.content is None
124 True
125 >>> download_subtitles([subtitle])
126 >>> subtitle.content.split(b'\n')[2]
127 b'Elszaladok a boltba'
128
129 If you want a string instead of bytes, you can access decoded content
130 with the text property:
131
132 >>> subtitle.text.split('\n')[3]
133 'néhány apróságért.'
134
135 Downloading best subtitles
136 Downloading best subtitles is what you want to do in almost all cases,
137 as a shortcut for listing, scoring and downloading you can use down‐
138 load_best_subtitles():
139
140 >>> best_subtitles = download_best_subtitles([video], {Language('hun')}, providers=['podnapisi'])
141 >>> best_subtitles[video]
142 [<PodnapisiSubtitle 'ZtAW' [hu]>]
143 >>> best_subtitle = best_subtitles[video][0]
144 >>> best_subtitle.content.split(b'\n')[2]
145 b'Elszaladok a boltba'
146
147 We end up with the same subtitle but with one line of code. Neat.
148
149 Save
150 We got ourselves a nice subtitle, now we can save it on the file system
151 using save_subtitles():
152
153 >>> save_subtitles(video, [best_subtitle])
154 [<PodnapisiSubtitle 'ZtAW' [hu]>]
155 >>> os.listdir()
156 ['The.Big.Bang.Theory.S05E18.HDTV.x264-LOL.hu.srt']
157
158 How it works
159 Providers
160 Subliminal uses multiple providers to give users a vast choice and have
161 a better chance to find the best matching subtitles. Current supported
162 providers are:
163
164 · Addic7ed
165
166 · LegendasTV
167
168 · NapiProjekt
169
170 · OpenSubtitles
171
172 · Podnapisi
173
174 · Shooter
175
176 · SubsCenter
177
178 · TheSubDB
179
180 · TvSubtitles
181
182 Providers all inherit the same Provider base class and thus share the
183 same API. They are registered on the subliminal.providers entry point
184 and are exposed through the provider_manager for easy access.
185
186 To work with multiple providers seamlessly, the ProviderPool exposes
187 the same API but distributes it to its providers and AsyncProviderPool
188 does it asynchronously.
189
190 Scoring
191 Rating subtitles and comparing them is probably the most difficult part
192 and this is where subliminal excels with its powerful scoring algo‐
193 rithm.
194
195 Using guessit and enzyme, subliminal extracts properties of the video
196 and match them with the properties of the subtitles found with the
197 providers.
198
199 Equations in subliminal.score give a score to each property (called a
200 match). The more matches the video and the subtitle have, the higher
201 the score computed with compute_score() gets.
202
203 Libraries
204 Various libraries are used by subliminal and are key to its success:
205
206 · guessit to guess information from filenames
207
208 · enzyme to detect embedded subtitles in videos and read other video
209 metadata
210
211 · babelfish to work with languages
212
213 · requests to make human readable HTTP requests
214
215 · BeautifulSoup to parse HTML and XML
216
217 · dogpile.cache to cache intermediate search results
218
219 · stevedore to manage the provider entry point
220
221 · chardet to detect subtitles’ encoding
222
223 · pysrt to validate downloaded subtitles
224
225 CLI
226 subliminal
227 Usage: subliminal [OPTIONS] COMMAND [ARGS]...
228
229 Subtitles, faster than your thoughts.
230
231 Options:
232 --addic7ed USERNAME PASSWORD Addic7ed configuration.
233 --legendastv USERNAME PASSWORD LegendasTV configuration.
234 --opensubtitles USERNAME PASSWORD
235 OpenSubtitles configuration.
236 --subscenter USERNAME PASSWORD SubsCenter configuration.
237 --cache-dir DIRECTORY Path to the cache directory. [default:
238 /builddir/.cache/subliminal]
239 --debug Print useful information for debugging
240 subliminal and for reporting bugs.
241 --version Show the version and exit.
242 --help Show this message and exit.
243
244 Commands:
245 cache Cache management.
246 download Download best subtitles.
247
248 Suggestions and bug reports are greatly appreciated:
249 https://github.com/Diaoul/subliminal/
250
251 subliminal download
252 Usage: subliminal download [OPTIONS] PATH...
253
254 Download best subtitles.
255
256 PATH can be an directory containing videos, a video file path or a video
257 file name. It can be used multiple times.
258
259 If an existing subtitle is detected (external or embedded) in the correct
260 language, the download is skipped for the associated video.
261
262 Options:
263 -l, --language LANGUAGE Language as IETF code, e.g. en, pt-BR (can
264 be used multiple times). [required]
265 -p, --provider [addic7ed|legendastv|opensubtitles|podnapisi|shooter|subscenter|thesubdb|tvsubtitles]
266 Provider to use (can be used multiple
267 times).
268 -r, --refiner [metadata|omdb|tvdb]
269 Refiner to use (can be used multiple times).
270 -a, --age AGE Filter videos newer than AGE, e.g. 12h,
271 1w2d.
272 -d, --directory DIR Directory where to save subtitles, default
273 is next to the video file.
274 -e, --encoding ENC Subtitle file encoding, default is to
275 preserve original encoding.
276 -s, --single Save subtitle without language code in the
277 file name, i.e. use .srt extension. Do not
278 use this unless your media player requires
279 it.
280 -f, --force Force download even if a subtitle already
281 exist.
282 -hi, --hearing-impaired Prefer hearing impaired subtitles.
283 -m, --min-score INTEGER RANGE Minimum score for a subtitle to be
284 downloaded (0 to 100).
285 -w, --max-workers INTEGER RANGE
286 Maximum number of threads to use.
287 -z, --archives / -Z, --no-archives
288 Scan archives for videos (supported
289 extensions: .rar). [default: True]
290 -v, --verbose Increase verbosity.
291 --help Show this message and exit.
292
293 subliminal cache
294 Usage: subliminal cache [OPTIONS]
295
296 Cache management.
297
298 Options:
299 --clear-subliminal Clear subliminal's cache. Use this ONLY if your cache is
300 corrupted or if you experience issues.
301 --help Show this message and exit.
302
303 Provider Guide
304 This guide is going to explain how to add a Provider to subliminal. You
305 are encouraged to take a look at the existing providers, it can be a
306 nice base to start your own provider.
307
308 Requirements
309 When starting a provider you should be able to answer to the following
310 questions:
311
312 · What languages does my provider support?
313
314 · What are the language codes for the supported languages?
315
316 · Does my provider deliver subtitles for episodes? for movies?
317
318 · Does my provider require a video hash?
319
320 Each response of these questions will help you set the correct
321 attributes for your Provider.
322
323 Video Validation
324 Not all providers deliver subtitles for Episode. Some may require a
325 hash. The check() method does validation against a Video object and
326 will return False if the given Video isn’t suitable. If you’re not
327 happy with the default implementation, you can override it.
328
329 Configuration
330 API keys must not be configurable by the user and must remain linked to
331 subliminal. Hence they must be written in the provider module.
332
333 Per-user authentication is allowed and must be configured at instantia‐
334 tion as keyword arguments. Configuration will be done by the user
335 through the provider_configs argument of the list_subtitles() and down‐
336 load_best_subtitles() functions. No network operation must be done dur‐
337 ing instantiation, only configuration. Any error in the configuration
338 must raise a ConfigurationError.
339
340 Beyond this point, if an error occurs, a generic ProviderError excep‐
341 tion must be raised. You can also use more explicit exception classes
342 AuthenticationError and DownloadLimitExceeded.
343
344 Initialization / Termination
345 Actual authentication operations must take place in the initialize()
346 method. If you need anything to be executed when the provider isn’t
347 used anymore like logout, use terminate().
348
349 Caching policy
350 To save bandwidth and improve querying time, intermediate data should
351 be cached when possible. Typical use case is when a query to retrieve
352 show ids is required prior to the query to actually search for subti‐
353 tles. In that case the function that gets the show id from the show
354 name must be cached. Expiration time should be SHOW_EXPIRATION_TIME
355 for shows and EPISODE_EXPIRATION_TIME for episodes.
356
357 Language
358 To be able to handle various language codes, subliminal makes use of
359 babelfish Language and converters. You must set the attribute languages
360 with a set of supported Language.
361
362 If you cannot find a suitable converter for your provider, you can make
363 one of your own.
364
365 Querying
366 The query() method parameters must include all aspects of provider’s
367 querying with primary types.
368
369 Subtitle
370 A custom Subtitle subclass must be created to represent a subtitle from
371 the provider. It must have relevant attributes that can be used to
372 compute the matches of the subtitle against a Video object.
373
374 Score computation
375 To be able to compare subtitles coming from different providers between
376 them, the get_matches() method must be implemented.
377
378 Unittesting
379 All possible uses of query(), list_subtitles() and download_subtitle()
380 methods must have integration tests. Use vcrpy for recording and play‐
381 back of network activity. Other functions must be unittested. If nec‐
382 essary, you can use unittest.mock to mock some functions.
383
385 If you are looking for information on a specific function, class or
386 method, this part of the documentation is for you.
387
388 Core
389 subliminal.core.ARCHIVE_EXTENSIONS
390 Supported archive extensions
391
392 class subliminal.core.ProviderPool(providers=None, provider_con‐
393 figs=None)
394 A pool of providers with the same API as a single Provider.
395
396 It has a few extra features:
397
398 · Lazy loads providers when needed and supports the with
399 statement to terminate() the providers on exit.
400
401 · Automatically discard providers on failure.
402
403 Parameters
404
405 · providers (list) – name of providers to use, if not
406 all.
407
408 · provider_configs (dict) – provider configuration as
409 keyword arguments per provider name to pass when
410 instanciating the Provider.
411
412 providers = None
413 Name of providers to use
414
415 provider_configs = None
416 Provider configuration
417
418 initialized_providers = None
419 Initialized providers
420
421 discarded_providers = None
422 Discarded providers
423
424 list_subtitles_provider(provider, video, languages)
425 List subtitles with a single provider.
426
427 The video and languages are checked against the provider.
428
429 Parameters
430
431 · provider (str) – name of the provider.
432
433 · video (Video) – video to list subtitles for.
434
435 · languages (set of Language) – languages to
436 search for.
437
438 Returns
439 found subtitles.
440
441 Return type
442 list of Subtitle or None
443
444 list_subtitles(video, languages)
445 List subtitles.
446
447 Parameters
448
449 · video (Video) – video to list subtitles for.
450
451 · languages (set of Language) – languages to
452 search for.
453
454 Returns
455 found subtitles.
456
457 Return type
458 list of Subtitle
459
460 download_subtitle(subtitle)
461 Download subtitle’s content.
462
463 Parameters
464 subtitle (Subtitle) – subtitle to download.
465
466 Returns
467 True if the subtitle has been successfully down‐
468 loaded, False otherwise.
469
470 Return type
471 bool
472
473 download_best_subtitles(subtitles, video, languages,
474 min_score=0, hearing_impaired=False, only_one=False, com‐
475 pute_score=None)
476 Download the best matching subtitles.
477
478 Parameters
479
480 · subtitles (list of Subtitle) – the subtitles to
481 use.
482
483 · video (Video) – video to download subtitles for.
484
485 · languages (set of Language) – languages to down‐
486 load.
487
488 · min_score (int) – minimum score for a subtitle
489 to be downloaded.
490
491 · hearing_impaired (bool) – hearing impaired pref‐
492 erence.
493
494 · only_one (bool) – download only one subtitle,
495 not one per language.
496
497 · compute_score – function that takes subtitle and
498 video as positional arguments, hearing_impaired
499 as keyword argument and returns the score.
500
501 Returns
502 downloaded subtitles.
503
504 Return type
505 list of Subtitle
506
507 terminate()
508 Terminate all the initialized_providers.
509
510 class subliminal.core.AsyncProviderPool(max_workers=None, *args,
511 **kwargs)
512 Subclass of ProviderPool with asynchronous support for
513 list_subtitles().
514
515 Parameters
516 max_workers (int) – maximum number of threads to use. If
517 None, max_workers will be set to the number of providers.
518
519 max_workers = None
520 Maximum number of threads to use
521
522 list_subtitles_provider(provider, video, languages)
523 List subtitles with a single provider.
524
525 The video and languages are checked against the provider.
526
527 Parameters
528
529 · provider (str) – name of the provider.
530
531 · video (Video) – video to list subtitles for.
532
533 · languages (set of Language) – languages to
534 search for.
535
536 Returns
537 found subtitles.
538
539 Return type
540 list of Subtitle or None
541
542 list_subtitles(video, languages)
543 List subtitles.
544
545 Parameters
546
547 · video (Video) – video to list subtitles for.
548
549 · languages (set of Language) – languages to
550 search for.
551
552 Returns
553 found subtitles.
554
555 Return type
556 list of Subtitle
557
558 subliminal.core.check_video(video, languages=None, age=None, unde‐
559 fined=False)
560 Perform some checks on the video.
561
562 All the checks are optional. Return False if any of this check
563 fails:
564
565 · languages already exist in video’s subtitle_languages.
566
567 · video is older than age.
568
569 · video has an undefined language in subtitle_languages.
570
571 Parameters
572
573 · video (Video) – video to check.
574
575 · languages (set of Language) – desired languages.
576
577 · age (datetime.timedelta) – maximum age of the video.
578
579 · undefined (bool) – fail on existing undefined language.
580
581 Returns
582 True if the video passes the checks, False otherwise.
583
584 Return type
585 bool
586
587 subliminal.core.search_external_subtitles(path, directory=None)
588 Search for external subtitles from a video path and their asso‐
589 ciated language.
590
591 Unless directory is provided, search will be made in the same
592 directory as the video file.
593
594 Parameters
595
596 · path (str) – path to the video.
597
598 · directory (str) – directory to search for subtitles.
599
600 Returns
601 found subtitles with their languages.
602
603 Return type
604 dict
605
606 subliminal.core.scan_video(path)
607 Scan a video from a path.
608
609 Parameters
610 path (str) – existing path to the video.
611
612 Returns
613 the scanned video.
614
615 Return type
616 Video
617
618 subliminal.core.scan_archive(path)
619 Scan an archive from a path.
620
621 Parameters
622 path (str) – existing path to the archive.
623
624 Returns
625 the scanned video.
626
627 Return type
628 Video
629
630 subliminal.core.scan_videos(path, age=None, archives=True)
631 Scan path for videos and their subtitles.
632
633 See refine() to find additional information for the video.
634
635 Parameters
636
637 · path (str) – existing directory path to scan.
638
639 · age (datetime.timedelta) – maximum age of the video or
640 archive.
641
642 · archives (bool) – scan videos in archives.
643
644 Returns
645 the scanned videos.
646
647 Return type
648 list of Video
649
650 subliminal.core.refine(video, episode_refiners=None, movie_refin‐
651 ers=None, **kwargs)
652 Refine a video using refiners.
653
654 NOTE:
655 Exceptions raised in refiners are silently passed and logged.
656
657 Parameters
658
659 · video (Video) – the video to refine.
660
661 · episode_refiners (tuple) – refiners to use for
662 episodes.
663
664 · movie_refiners (tuple) – refiners to use for movies.
665
666 · **kwargs – additional parameters for the refine() func‐
667 tions.
668
669 subliminal.core.list_subtitles(videos, languages, pool_class=<class
670 'subliminal.core.ProviderPool'>, **kwargs)
671 List subtitles.
672
673 The videos must pass the languages check of check_video().
674
675 Parameters
676
677 · videos (set of Video) – videos to list subtitles for.
678
679 · languages (set of Language) – languages to search for.
680
681 · pool_class (ProviderPool, AsyncProviderPool or similar)
682 – class to use as provider pool.
683
684 · **kwargs – additional parameters for the provided
685 pool_class constructor.
686
687 Returns
688 found subtitles per video.
689
690 Return type
691 dict of Video to list of Subtitle
692
693 subliminal.core.download_subtitles(subtitles, pool_class=<class 'sub‐
694 liminal.core.ProviderPool'>, **kwargs)
695 Download content of subtitles.
696
697 Parameters
698
699 · subtitles (list of Subtitle) – subtitles to download.
700
701 · pool_class (ProviderPool, AsyncProviderPool or similar)
702 – class to use as provider pool.
703
704 · **kwargs – additional parameters for the provided
705 pool_class constructor.
706
707 subliminal.core.download_best_subtitles(videos, languages, min_score=0,
708 hearing_impaired=False, only_one=False, compute_score=None,
709 pool_class=<class 'subliminal.core.ProviderPool'>, **kwargs)
710 List and download the best matching subtitles.
711
712 The videos must pass the languages and undefined (only_one)
713 checks of check_video().
714
715 Parameters
716
717 · videos (set of Video) – videos to download subtitles
718 for.
719
720 · languages (set of Language) – languages to download.
721
722 · min_score (int) – minimum score for a subtitle to be
723 downloaded.
724
725 · hearing_impaired (bool) – hearing impaired preference.
726
727 · only_one (bool) – download only one subtitle, not one
728 per language.
729
730 · compute_score – function that takes subtitle and video
731 as positional arguments, hearing_impaired as keyword
732 argument and returns the score.
733
734 · pool_class (ProviderPool, AsyncProviderPool or similar)
735 – class to use as provider pool.
736
737 · **kwargs – additional parameters for the provided
738 pool_class constructor.
739
740 Returns
741 downloaded subtitles per video.
742
743 Return type
744 dict of Video to list of Subtitle
745
746 subliminal.core.save_subtitles(video, subtitles, single=False, direc‐
747 tory=None, encoding=None)
748 Save subtitles on filesystem.
749
750 Subtitles are saved in the order of the list. If a subtitle with
751 a language has already been saved, other subtitles with the same
752 language are silently ignored.
753
754 The extension used is .lang.srt by default or .srt is single is
755 True, with lang being the IETF code for the language of the sub‐
756 title.
757
758 Parameters
759
760 · video (Video) – video of the subtitles.
761
762 · subtitles (list of Subtitle) – subtitles to save.
763
764 · single (bool) – save a single subtitle, default is to
765 save one subtitle per language.
766
767 · directory (str) – path to directory where to save the
768 subtitles, default is next to the video.
769
770 · encoding (str) – encoding in which to save the subti‐
771 tles, default is to keep original encoding.
772
773 Returns
774 the saved subtitles
775
776 Return type
777 list of Subtitle
778
779 Video
780 subliminal.video.VIDEO_EXTENSIONS
781 Video extensions
782
783 class subliminal.video.Video(name, format=None, release_group=None,
784 resolution=None, video_codec=None, audio_codec=None, imdb_id=None,
785 hashes=None, size=None, subtitle_languages=None)
786 Base class for videos.
787
788 Represent a video, existing or not.
789
790 Parameters
791
792 · name (str) – name or path of the video.
793
794 · format (str) – format of the video (HDTV, WEB-DL, Blu‐
795 Ray, …).
796
797 · release_group (str) – release group of the video.
798
799 · resolution (str) – resolution of the video stream
800 (480p, 720p, 1080p or 1080i).
801
802 · video_codec (str) – codec of the video stream.
803
804 · audio_codec (str) – codec of the main audio stream.
805
806 · imdb_id (str) – IMDb id of the video.
807
808 · hashes (dict) – hashes of the video file by provider
809 names.
810
811 · size (int) – size of the video file in bytes.
812
813 · subtitle_languages (set) – existing subtitle languages.
814
815 name = None
816 Name or path of the video
817
818 format = None
819 Format of the video (HDTV, WEB-DL, BluRay, …)
820
821 release_group = None
822 Release group of the video
823
824 resolution = None
825 Resolution of the video stream (480p, 720p, 1080p or
826 1080i)
827
828 video_codec = None
829 Codec of the video stream
830
831 audio_codec = None
832 Codec of the main audio stream
833
834 imdb_id = None
835 IMDb id of the video
836
837 hashes = None
838 Hashes of the video file by provider names
839
840 size = None
841 Size of the video file in bytes
842
843 subtitle_languages = None
844 Existing subtitle languages
845
846 property exists
847 Test whether the video exists
848
849 property age
850 Age of the video
851
852 classmethod fromguess(name, guess)
853 Create an Episode or a Movie with the given name based on
854 the guess.
855
856 Parameters
857
858 · name (str) – name of the video.
859
860 · guess (dict) – guessed data.
861
862 Raise ValueError if the type of the guess is invalid
863
864 classmethod fromname(name)
865 Shortcut for fromguess() with a guess guessed from the
866 name.
867
868 Parameters
869 name (str) – name of the video.
870
871 class subliminal.video.Episode(name, series, season, episode,
872 title=None, year=None, original_series=True, tvdb_id=None,
873 series_tvdb_id=None, series_imdb_id=None, **kwargs)
874 Episode Video.
875
876 Parameters
877
878 · series (str) – series of the episode.
879
880 · season (int) – season number of the episode.
881
882 · episode (int) – episode number of the episode.
883
884 · title (str) – title of the episode.
885
886 · year (int) – year of the series.
887
888 · original_series (bool) – whether the series is the
889 first with this name.
890
891 · tvdb_id (int) – TVDB id of the episode.
892
893 · **kwargs – additional parameters for the Video con‐
894 structor.
895
896 series = None
897 Series of the episode
898
899 season = None
900 Season number of the episode
901
902 episode = None
903 Episode number of the episode
904
905 title = None
906 Title of the episode
907
908 year = None
909 Year of series
910
911 original_series = None
912 The series is the first with this name
913
914 tvdb_id = None
915 TVDB id of the episode
916
917 series_tvdb_id = None
918 TVDB id of the series
919
920 series_imdb_id = None
921 IMDb id of the series
922
923 classmethod fromguess(name, guess)
924 Create an Episode or a Movie with the given name based on
925 the guess.
926
927 Parameters
928
929 · name (str) – name of the video.
930
931 · guess (dict) – guessed data.
932
933 Raise ValueError if the type of the guess is invalid
934
935 classmethod fromname(name)
936 Shortcut for fromguess() with a guess guessed from the
937 name.
938
939 Parameters
940 name (str) – name of the video.
941
942 class subliminal.video.Movie(name, title, year=None, **kwargs)
943 Movie Video.
944
945 Parameters
946
947 · title (str) – title of the movie.
948
949 · year (int) – year of the movie.
950
951 · **kwargs – additional parameters for the Video con‐
952 structor.
953
954 title = None
955 Title of the movie
956
957 year = None
958 Year of the movie
959
960 classmethod fromguess(name, guess)
961 Create an Episode or a Movie with the given name based on
962 the guess.
963
964 Parameters
965
966 · name (str) – name of the video.
967
968 · guess (dict) – guessed data.
969
970 Raise ValueError if the type of the guess is invalid
971
972 classmethod fromname(name)
973 Shortcut for fromguess() with a guess guessed from the
974 name.
975
976 Parameters
977 name (str) – name of the video.
978
979 Subtitle
980 subliminal.subtitle.SUBTITLE_EXTENSIONS
981 Subtitle extensions
982
983 class subliminal.subtitle.Subtitle(language, hearing_impaired=False,
984 page_link=None, encoding=None)
985 Base class for subtitle.
986
987 Parameters
988
989 · language (Language) – language of the subtitle.
990
991 · hearing_impaired (bool) – whether or not the subtitle
992 is hearing impaired.
993
994 · page_link (str) – URL of the web page from which the
995 subtitle can be downloaded.
996
997 · encoding (str) – Text encoding of the subtitle.
998
999 provider_name = ''
1000 Name of the provider that returns that class of subtitle
1001
1002 language = None
1003 Language of the subtitle
1004
1005 hearing_impaired = None
1006 Whether or not the subtitle is hearing impaired
1007
1008 page_link = None
1009 URL of the web page from which the subtitle can be down‐
1010 loaded
1011
1012 content = None
1013 Content as bytes
1014
1015 encoding = None
1016 Encoding to decode with when accessing text
1017
1018 property id
1019 Unique identifier of the subtitle
1020
1021 property text
1022 Content as string
1023
1024 If encoding is None, the encoding is guessed with
1025 guess_encoding()
1026
1027 is_valid()
1028 Check if a text is a valid SubRip format.
1029
1030 Returns
1031 whether or not the subtitle is valid.
1032
1033 Return type
1034 bool
1035
1036 guess_encoding()
1037 Guess encoding using the language, falling back on
1038 chardet.
1039
1040 Returns
1041 the guessed encoding.
1042
1043 Return type
1044 str
1045
1046 get_matches(video)
1047 Get the matches against the video.
1048
1049 Parameters
1050 video (Video) – the video to get the matches with.
1051
1052 Returns
1053 matches of the subtitle.
1054
1055 Return type
1056 set
1057
1058 subliminal.subtitle.get_subtitle_path(video_path, language=None, exten‐
1059 sion='.srt')
1060 Get the subtitle path using the video_path and language.
1061
1062 Parameters
1063
1064 · video_path (str) – path to the video.
1065
1066 · language (Language) – language of the subtitle to put
1067 in the path.
1068
1069 · extension (str) – extension of the subtitle.
1070
1071 Returns
1072 path of the subtitle.
1073
1074 Return type
1075 str
1076
1077 subliminal.subtitle.guess_matches(video, guess, partial=False)
1078 Get matches between a video and a guess.
1079
1080 If a guess is partial, the absence information won’t be counted
1081 as a match.
1082
1083 Parameters
1084
1085 · video (Video) – the video.
1086
1087 · guess (dict) – the guess.
1088
1089 · partial (bool) – whether or not the guess is partial.
1090
1091 Returns
1092 matches between the video and the guess.
1093
1094 Return type
1095 set
1096
1097 subliminal.subtitle.fix_line_ending(content)
1098 Fix line ending of content by changing it to
1099
1100 param bytes content
1101 content of the subtitle.
1102
1103 return the content with fixed line endings.
1104
1105 rtype bytes
1106
1107 Providers
1108 class subliminal.providers.TimeoutSafeTransport(timeout, *args,
1109 **kwargs)
1110 Timeout support for xmlrpc.client.SafeTransport.
1111
1112 class subliminal.providers.ParserBeautifulSoup(markup, parsers,
1113 **kwargs)
1114 A bs4.BeautifulSoup that picks the first parser available in
1115 parsers.
1116
1117 Parameters
1118
1119 · markup – markup for the bs4.BeautifulSoup.
1120
1121 · parsers (list) – parser names, in order of preference.
1122
1123 class subliminal.providers.Provider
1124 Base class for providers.
1125
1126 If any configuration is possible for the provider, like creden‐
1127 tials, it must take place during instantiation.
1128
1129 Raise ConfigurationError if there is a configuration error
1130
1131 languages = {}
1132 Supported set of Language
1133
1134 video_types = (<class 'subliminal.video.Episode'>, <class 'sub‐
1135 liminal.video.Movie'>)
1136 Supported video types
1137
1138 required_hash = None
1139 Required hash, if any
1140
1141 initialize()
1142 Initialize the provider.
1143
1144 Must be called when starting to work with the provider.
1145 This is the place for network initialization or login
1146 operations.
1147
1148 NOTE:
1149 This is called automatically when entering the with
1150 statement
1151
1152 terminate()
1153 Terminate the provider.
1154
1155 Must be called when done with the provider. This is the
1156 place for network shutdown or logout operations.
1157
1158 NOTE:
1159 This is called automatically when exiting the with
1160 statement
1161
1162 classmethod check(video)
1163 Check if the video can be processed.
1164
1165 The video is considered invalid if not an instance of
1166 video_types or if the required_hash is not present in
1167 hashes attribute of the video.
1168
1169 Parameters
1170 video (Video) – the video to check.
1171
1172 Returns
1173 True if the video is valid, False otherwise.
1174
1175 Return type
1176 bool
1177
1178 query(*args, **kwargs)
1179 Query the provider for subtitles.
1180
1181 Arguments should match as much as possible the actual
1182 parameters for querying the provider
1183
1184 Returns
1185 found subtitles.
1186
1187 Return type
1188 list of Subtitle
1189
1190 Raise ProviderError
1191
1192 list_subtitles(video, languages)
1193 List subtitles for the video with the given languages.
1194
1195 This will call the query() method internally. The parame‐
1196 ters passed to the query() method may vary depending on
1197 the amount of information available in the video.
1198
1199 Parameters
1200
1201 · video (Video) – video to list subtitles for.
1202
1203 · languages (set of Language) – languages to
1204 search for.
1205
1206 Returns
1207 found subtitles.
1208
1209 Return type
1210 list of Subtitle
1211
1212 Raise ProviderError
1213
1214 download_subtitle(subtitle)
1215 Download subtitle’s content.
1216
1217 Parameters
1218 subtitle (Subtitle) – subtitle to download.
1219
1220 Raise ProviderError
1221
1222 Addic7ed
1223 subliminal.providers.addic7ed.series_year_re = re.com‐
1224 pile("^(?P<series>[ \\w\\'.:(),&!?-]+?)(?: \\((?P<year>\\d{4})\\))?$")
1225 Series header parsing regex
1226
1227 class subliminal.providers.addic7ed.Addic7edSubtitle(language, hear‐
1228 ing_impaired, page_link, series, season, episode, title, year, version,
1229 download_link)
1230 Addic7ed Subtitle.
1231
1232 property id
1233 Unique identifier of the subtitle
1234
1235 get_matches(video)
1236 Get the matches against the video.
1237
1238 Parameters
1239 video (Video) – the video to get the matches with.
1240
1241 Returns
1242 matches of the subtitle.
1243
1244 Return type
1245 set
1246
1247 class subliminal.providers.addic7ed.Addic7edProvider(username=None,
1248 password=None)
1249 Addic7ed Provider.
1250
1251 initialize()
1252 Initialize the provider.
1253
1254 Must be called when starting to work with the provider.
1255 This is the place for network initialization or login
1256 operations.
1257
1258 NOTE:
1259 This is called automatically when entering the with
1260 statement
1261
1262 terminate()
1263 Terminate the provider.
1264
1265 Must be called when done with the provider. This is the
1266 place for network shutdown or logout operations.
1267
1268 NOTE:
1269 This is called automatically when exiting the with
1270 statement
1271
1272 _get_show_ids()
1273 Get the dict of show ids per series by querying the
1274 shows.php page.
1275
1276 Returns
1277 show id per series, lower case and without quotes.
1278
1279 Return type
1280 dict
1281
1282 _search_show_id(series, year=None)
1283 Search the show id from the series and year.
1284
1285 Parameters
1286
1287 · series (str) – series of the episode.
1288
1289 · year (int) – year of the series, if any.
1290
1291 Returns
1292 the show id, if found.
1293
1294 Return type
1295 int
1296
1297 get_show_id(series, year=None, country_code=None)
1298 Get the best matching show id for series, year and coun‐
1299 try_code.
1300
1301 First search in the result of _get_show_ids() and fall‐
1302 back on a search with _search_show_id().
1303
1304 Parameters
1305
1306 · series (str) – series of the episode.
1307
1308 · year (int) – year of the series, if any.
1309
1310 · country_code (str) – country code of the series,
1311 if any.
1312
1313 Returns
1314 the show id, if found.
1315
1316 Return type
1317 int
1318
1319 query(series, season, year=None, country=None)
1320 Query the provider for subtitles.
1321
1322 Arguments should match as much as possible the actual
1323 parameters for querying the provider
1324
1325 Returns
1326 found subtitles.
1327
1328 Return type
1329 list of Subtitle
1330
1331 Raise ProviderError
1332
1333 list_subtitles(video, languages)
1334 List subtitles for the video with the given languages.
1335
1336 This will call the query() method internally. The parame‐
1337 ters passed to the query() method may vary depending on
1338 the amount of information available in the video.
1339
1340 Parameters
1341
1342 · video (Video) – video to list subtitles for.
1343
1344 · languages (set of Language) – languages to
1345 search for.
1346
1347 Returns
1348 found subtitles.
1349
1350 Return type
1351 list of Subtitle
1352
1353 Raise ProviderError
1354
1355 download_subtitle(subtitle)
1356 Download subtitle’s content.
1357
1358 Parameters
1359 subtitle (Subtitle) – subtitle to download.
1360
1361 Raise ProviderError
1362
1363 LegendasTv
1364 subliminal.providers.legendastv.type_map = {'C': 'episode', 'M':
1365 'movie', 'S': 'episode'}
1366 Conversion map for types
1367
1368 subliminal.providers.legendastv.season_re = re.compile(' - (?P<sea‐
1369 son>\\d+)(\\xaa|a|st|nd|rd|th) (temporada|season)', re.IGNORECASE)
1370 BR title season parsing regex
1371
1372 subliminal.providers.legendastv.downloads_re = re.compile('(?P<down‐
1373 loads>\\d+) downloads')
1374 Downloads parsing regex
1375
1376 subliminal.providers.legendastv.rating_re = re.compile('nota (?P<rat‐
1377 ing>\\d+)')
1378 Rating parsing regex
1379
1380 subliminal.providers.legendastv.timestamp_re = re.com‐
1381 pile('(?P<day>\\d+)/(?P<month>\\d+)/(?P<year>\\d+) -
1382 (?P<hour>\\d+):(?P<minute>\\d+)')
1383 Timestamp parsing regex
1384
1385 subliminal.providers.legendastv.releases_key = 'sublimi‐
1386 nal.providers.legendastv:releases|{archive_id}'
1387 Cache key for releases
1388
1389 class subliminal.providers.legendastv.LegendasTVArchive(id, name, pack,
1390 featured, link, downloads=0, rating=0, timestamp=None)
1391 LegendasTV Archive.
1392
1393 Parameters
1394
1395 · id (str) – identifier.
1396
1397 · name (str) – name.
1398
1399 · pack (bool) – contains subtitles for multiple episodes.
1400
1401 · pack – featured.
1402
1403 · link (str) – link.
1404
1405 · downloads (int) – download count.
1406
1407 · rating (int) – rating (0-10).
1408
1409 · timestamp (datetime.datetime) – timestamp.
1410
1411 id = None
1412 Identifier
1413
1414 name = None
1415 Name
1416
1417 pack = None
1418 Pack
1419
1420 featured = None
1421 Featured
1422
1423 link = None
1424 Link
1425
1426 downloads = None
1427 Download count
1428
1429 rating = None
1430 Rating (0-10)
1431
1432 timestamp = None
1433 Timestamp
1434
1435 content = None
1436 Compressed content as rarfile.RarFile or zipfile.ZipFile
1437
1438 class subliminal.providers.legendastv.LegendasTVSubtitle(language,
1439 type, title, year, imdb_id, season, archive, name)
1440 LegendasTV Subtitle.
1441
1442 property id
1443 Unique identifier of the subtitle
1444
1445 get_matches(video, hearing_impaired=False)
1446 Get the matches against the video.
1447
1448 Parameters
1449 video (Video) – the video to get the matches with.
1450
1451 Returns
1452 matches of the subtitle.
1453
1454 Return type
1455 set
1456
1457 class subliminal.providers.legendastv.LegendasTVProvider(username=None,
1458 password=None)
1459 LegendasTV Provider.
1460
1461 Parameters
1462
1463 · username (str) – username.
1464
1465 · password (str) – password.
1466
1467 initialize()
1468 Initialize the provider.
1469
1470 Must be called when starting to work with the provider.
1471 This is the place for network initialization or login
1472 operations.
1473
1474 NOTE:
1475 This is called automatically when entering the with
1476 statement
1477
1478 terminate()
1479 Terminate the provider.
1480
1481 Must be called when done with the provider. This is the
1482 place for network shutdown or logout operations.
1483
1484 NOTE:
1485 This is called automatically when exiting the with
1486 statement
1487
1488 search_titles(title)
1489 Search for titles matching the title.
1490
1491 Parameters
1492 title (str) – the title to search for.
1493
1494 Returns
1495 found titles.
1496
1497 Return type
1498 dict
1499
1500 get_archives(title_id, language_code)
1501 Get the archive list from a given title_id and lan‐
1502 guage_code.
1503
1504 Parameters
1505
1506 · title_id (int) – title id.
1507
1508 · language_code (int) – language code.
1509
1510 Returns
1511 the archives.
1512
1513 Return type
1514 list of LegendasTVArchive
1515
1516 download_archive(archive)
1517 Download an archive’s content.
1518
1519 Parameters
1520 archive (LegendasTVArchive) – the archive to down‐
1521 load content of.
1522
1523 query(language, title, season=None, episode=None, year=None)
1524 Query the provider for subtitles.
1525
1526 Arguments should match as much as possible the actual
1527 parameters for querying the provider
1528
1529 Returns
1530 found subtitles.
1531
1532 Return type
1533 list of Subtitle
1534
1535 Raise ProviderError
1536
1537 list_subtitles(video, languages)
1538 List subtitles for the video with the given languages.
1539
1540 This will call the query() method internally. The parame‐
1541 ters passed to the query() method may vary depending on
1542 the amount of information available in the video.
1543
1544 Parameters
1545
1546 · video (Video) – video to list subtitles for.
1547
1548 · languages (set of Language) – languages to
1549 search for.
1550
1551 Returns
1552 found subtitles.
1553
1554 Return type
1555 list of Subtitle
1556
1557 Raise ProviderError
1558
1559 download_subtitle(subtitle)
1560 Download subtitle’s content.
1561
1562 Parameters
1563 subtitle (Subtitle) – subtitle to download.
1564
1565 Raise ProviderError
1566
1567 NapiProjekt
1568 subliminal.providers.napiprojekt.get_subhash(hash)
1569 Get a second hash based on napiprojekt’s hash.
1570
1571 Parameters
1572 hash (str) – napiprojekt’s hash.
1573
1574 Returns
1575 the subhash.
1576
1577 Return type
1578 str
1579
1580 class subliminal.providers.napiprojekt.NapiProjektSubtitle(language,
1581 hash)
1582 NapiProjekt Subtitle.
1583
1584 property id
1585 Unique identifier of the subtitle
1586
1587 get_matches(video)
1588 Get the matches against the video.
1589
1590 Parameters
1591 video (Video) – the video to get the matches with.
1592
1593 Returns
1594 matches of the subtitle.
1595
1596 Return type
1597 set
1598
1599 class subliminal.providers.napiprojekt.NapiProjektProvider
1600 NapiProjekt Provider.
1601
1602 initialize()
1603 Initialize the provider.
1604
1605 Must be called when starting to work with the provider.
1606 This is the place for network initialization or login
1607 operations.
1608
1609 NOTE:
1610 This is called automatically when entering the with
1611 statement
1612
1613 terminate()
1614 Terminate the provider.
1615
1616 Must be called when done with the provider. This is the
1617 place for network shutdown or logout operations.
1618
1619 NOTE:
1620 This is called automatically when exiting the with
1621 statement
1622
1623 query(language, hash)
1624 Query the provider for subtitles.
1625
1626 Arguments should match as much as possible the actual
1627 parameters for querying the provider
1628
1629 Returns
1630 found subtitles.
1631
1632 Return type
1633 list of Subtitle
1634
1635 Raise ProviderError
1636
1637 list_subtitles(video, languages)
1638 List subtitles for the video with the given languages.
1639
1640 This will call the query() method internally. The parame‐
1641 ters passed to the query() method may vary depending on
1642 the amount of information available in the video.
1643
1644 Parameters
1645
1646 · video (Video) – video to list subtitles for.
1647
1648 · languages (set of Language) – languages to
1649 search for.
1650
1651 Returns
1652 found subtitles.
1653
1654 Return type
1655 list of Subtitle
1656
1657 Raise ProviderError
1658
1659 download_subtitle(subtitle)
1660 Download subtitle’s content.
1661
1662 Parameters
1663 subtitle (Subtitle) – subtitle to download.
1664
1665 Raise ProviderError
1666
1667 OpenSubtitles
1668 class subliminal.providers.opensubtitles.OpenSubtitlesSubtitle(lan‐
1669 guage, hearing_impaired, page_link, subtitle_id, matched_by,
1670 movie_kind, hash, movie_name, movie_release_name, movie_year,
1671 movie_imdb_id, series_season, series_episode, filename, encoding)
1672 OpenSubtitles Subtitle.
1673
1674 property id
1675 Unique identifier of the subtitle
1676
1677 get_matches(video)
1678 Get the matches against the video.
1679
1680 Parameters
1681 video (Video) – the video to get the matches with.
1682
1683 Returns
1684 matches of the subtitle.
1685
1686 Return type
1687 set
1688
1689 class subliminal.providers.opensubtitles.OpenSubtitlesProvider(user‐
1690 name=None, password=None)
1691 OpenSubtitles Provider.
1692
1693 Parameters
1694
1695 · username (str) – username.
1696
1697 · password (str) – password.
1698
1699 initialize()
1700 Initialize the provider.
1701
1702 Must be called when starting to work with the provider.
1703 This is the place for network initialization or login
1704 operations.
1705
1706 NOTE:
1707 This is called automatically when entering the with
1708 statement
1709
1710 terminate()
1711 Terminate the provider.
1712
1713 Must be called when done with the provider. This is the
1714 place for network shutdown or logout operations.
1715
1716 NOTE:
1717 This is called automatically when exiting the with
1718 statement
1719
1720 query(languages, hash=None, size=None, imdb_id=None, query=None,
1721 season=None, episode=None, tag=None)
1722 Query the provider for subtitles.
1723
1724 Arguments should match as much as possible the actual
1725 parameters for querying the provider
1726
1727 Returns
1728 found subtitles.
1729
1730 Return type
1731 list of Subtitle
1732
1733 Raise ProviderError
1734
1735 list_subtitles(video, languages)
1736 List subtitles for the video with the given languages.
1737
1738 This will call the query() method internally. The parame‐
1739 ters passed to the query() method may vary depending on
1740 the amount of information available in the video.
1741
1742 Parameters
1743
1744 · video (Video) – video to list subtitles for.
1745
1746 · languages (set of Language) – languages to
1747 search for.
1748
1749 Returns
1750 found subtitles.
1751
1752 Return type
1753 list of Subtitle
1754
1755 Raise ProviderError
1756
1757 download_subtitle(subtitle)
1758 Download subtitle’s content.
1759
1760 Parameters
1761 subtitle (Subtitle) – subtitle to download.
1762
1763 Raise ProviderError
1764
1765 exception subliminal.providers.opensubtitles.OpenSubtitlesError
1766 Base class for non-generic OpenSubtitlesProvider exceptions.
1767
1768 exception subliminal.providers.opensubtitles.Unauthorized
1769 Exception raised when status is ‘401 Unauthorized’.
1770
1771 exception subliminal.providers.opensubtitles.NoSession
1772 Exception raised when status is ‘406 No session’.
1773
1774 exception subliminal.providers.opensubtitles.DownloadLimitReached
1775 Exception raised when status is ‘407 Download limit reached’.
1776
1777 exception subliminal.providers.opensubtitles.InvalidImdbid
1778 Exception raised when status is ‘413 Invalid ImdbID’.
1779
1780 exception subliminal.providers.opensubtitles.UnknownUserAgent
1781 Exception raised when status is ‘414 Unknown User Agent’.
1782
1783 exception subliminal.providers.opensubtitles.DisabledUserAgent
1784 Exception raised when status is ‘415 Disabled user agent’.
1785
1786 exception subliminal.providers.opensubtitles.ServiceUnavailable
1787 Exception raised when status is ‘503 Service Unavailable’.
1788
1789 subliminal.providers.opensubtitles.checked(response)
1790 Check a response status before returning it.
1791
1792 Parameters
1793 response – a response from a XMLRPC call to OpenSubti‐
1794 tles.
1795
1796 Returns
1797 the response.
1798
1799 Raise OpenSubtitlesError
1800
1801 Podnapisi
1802 class subliminal.providers.podnapisi.PodnapisiSubtitle(language, hear‐
1803 ing_impaired, page_link, pid, releases, title, season=None,
1804 episode=None, year=None)
1805 Podnapisi Subtitle.
1806
1807 property id
1808 Unique identifier of the subtitle
1809
1810 get_matches(video)
1811 Get the matches against the video.
1812
1813 Parameters
1814 video (Video) – the video to get the matches with.
1815
1816 Returns
1817 matches of the subtitle.
1818
1819 Return type
1820 set
1821
1822 class subliminal.providers.podnapisi.PodnapisiProvider
1823 Podnapisi Provider.
1824
1825 initialize()
1826 Initialize the provider.
1827
1828 Must be called when starting to work with the provider.
1829 This is the place for network initialization or login
1830 operations.
1831
1832 NOTE:
1833 This is called automatically when entering the with
1834 statement
1835
1836 terminate()
1837 Terminate the provider.
1838
1839 Must be called when done with the provider. This is the
1840 place for network shutdown or logout operations.
1841
1842 NOTE:
1843 This is called automatically when exiting the with
1844 statement
1845
1846 query(language, keyword, season=None, episode=None, year=None)
1847 Query the provider for subtitles.
1848
1849 Arguments should match as much as possible the actual
1850 parameters for querying the provider
1851
1852 Returns
1853 found subtitles.
1854
1855 Return type
1856 list of Subtitle
1857
1858 Raise ProviderError
1859
1860 list_subtitles(video, languages)
1861 List subtitles for the video with the given languages.
1862
1863 This will call the query() method internally. The parame‐
1864 ters passed to the query() method may vary depending on
1865 the amount of information available in the video.
1866
1867 Parameters
1868
1869 · video (Video) – video to list subtitles for.
1870
1871 · languages (set of Language) – languages to
1872 search for.
1873
1874 Returns
1875 found subtitles.
1876
1877 Return type
1878 list of Subtitle
1879
1880 Raise ProviderError
1881
1882 download_subtitle(subtitle)
1883 Download subtitle’s content.
1884
1885 Parameters
1886 subtitle (Subtitle) – subtitle to download.
1887
1888 Raise ProviderError
1889
1890 Shooter
1891 class subliminal.providers.shooter.ShooterSubtitle(language, hash,
1892 download_link)
1893 Shooter Subtitle.
1894
1895 property id
1896 Unique identifier of the subtitle
1897
1898 get_matches(video)
1899 Get the matches against the video.
1900
1901 Parameters
1902 video (Video) – the video to get the matches with.
1903
1904 Returns
1905 matches of the subtitle.
1906
1907 Return type
1908 set
1909
1910 class subliminal.providers.shooter.ShooterProvider
1911 Shooter Provider.
1912
1913 initialize()
1914 Initialize the provider.
1915
1916 Must be called when starting to work with the provider.
1917 This is the place for network initialization or login
1918 operations.
1919
1920 NOTE:
1921 This is called automatically when entering the with
1922 statement
1923
1924 terminate()
1925 Terminate the provider.
1926
1927 Must be called when done with the provider. This is the
1928 place for network shutdown or logout operations.
1929
1930 NOTE:
1931 This is called automatically when exiting the with
1932 statement
1933
1934 query(language, filename, hash=None)
1935 Query the provider for subtitles.
1936
1937 Arguments should match as much as possible the actual
1938 parameters for querying the provider
1939
1940 Returns
1941 found subtitles.
1942
1943 Return type
1944 list of Subtitle
1945
1946 Raise ProviderError
1947
1948 list_subtitles(video, languages)
1949 List subtitles for the video with the given languages.
1950
1951 This will call the query() method internally. The parame‐
1952 ters passed to the query() method may vary depending on
1953 the amount of information available in the video.
1954
1955 Parameters
1956
1957 · video (Video) – video to list subtitles for.
1958
1959 · languages (set of Language) – languages to
1960 search for.
1961
1962 Returns
1963 found subtitles.
1964
1965 Return type
1966 list of Subtitle
1967
1968 Raise ProviderError
1969
1970 download_subtitle(subtitle)
1971 Download subtitle’s content.
1972
1973 Parameters
1974 subtitle (Subtitle) – subtitle to download.
1975
1976 Raise ProviderError
1977
1978 SubsCenter
1979 class subliminal.providers.subscenter.SubsCenterSubtitle(language,
1980 hearing_impaired, page_link, series, season, episode, title, subti‐
1981 tle_id, subtitle_key, downloaded, releases)
1982 SubsCenter Subtitle.
1983
1984 property id
1985 Unique identifier of the subtitle
1986
1987 get_matches(video)
1988 Get the matches against the video.
1989
1990 Parameters
1991 video (Video) – the video to get the matches with.
1992
1993 Returns
1994 matches of the subtitle.
1995
1996 Return type
1997 set
1998
1999 class subliminal.providers.subscenter.SubsCenterProvider(username=None,
2000 password=None)
2001 SubsCenter Provider.
2002
2003 initialize()
2004 Initialize the provider.
2005
2006 Must be called when starting to work with the provider.
2007 This is the place for network initialization or login
2008 operations.
2009
2010 NOTE:
2011 This is called automatically when entering the with
2012 statement
2013
2014 terminate()
2015 Terminate the provider.
2016
2017 Must be called when done with the provider. This is the
2018 place for network shutdown or logout operations.
2019
2020 NOTE:
2021 This is called automatically when exiting the with
2022 statement
2023
2024 _search_url_titles(title)
2025 Search the URL titles by kind for the given title.
2026
2027 Parameters
2028 title (str) – title to search for.
2029
2030 Returns
2031 the URL titles by kind.
2032
2033 Return type
2034 collections.defaultdict
2035
2036 query(title, season=None, episode=None)
2037 Query the provider for subtitles.
2038
2039 Arguments should match as much as possible the actual
2040 parameters for querying the provider
2041
2042 Returns
2043 found subtitles.
2044
2045 Return type
2046 list of Subtitle
2047
2048 Raise ProviderError
2049
2050 list_subtitles(video, languages)
2051 List subtitles for the video with the given languages.
2052
2053 This will call the query() method internally. The parame‐
2054 ters passed to the query() method may vary depending on
2055 the amount of information available in the video.
2056
2057 Parameters
2058
2059 · video (Video) – video to list subtitles for.
2060
2061 · languages (set of Language) – languages to
2062 search for.
2063
2064 Returns
2065 found subtitles.
2066
2067 Return type
2068 list of Subtitle
2069
2070 Raise ProviderError
2071
2072 download_subtitle(subtitle)
2073 Download subtitle’s content.
2074
2075 Parameters
2076 subtitle (Subtitle) – subtitle to download.
2077
2078 Raise ProviderError
2079
2080 TheSubDB
2081 class subliminal.providers.thesubdb.TheSubDBSubtitle(language, hash)
2082 TheSubDB Subtitle.
2083
2084 property id
2085 Unique identifier of the subtitle
2086
2087 get_matches(video)
2088 Get the matches against the video.
2089
2090 Parameters
2091 video (Video) – the video to get the matches with.
2092
2093 Returns
2094 matches of the subtitle.
2095
2096 Return type
2097 set
2098
2099 class subliminal.providers.thesubdb.TheSubDBProvider
2100 TheSubDB Provider.
2101
2102 initialize()
2103 Initialize the provider.
2104
2105 Must be called when starting to work with the provider.
2106 This is the place for network initialization or login
2107 operations.
2108
2109 NOTE:
2110 This is called automatically when entering the with
2111 statement
2112
2113 terminate()
2114 Terminate the provider.
2115
2116 Must be called when done with the provider. This is the
2117 place for network shutdown or logout operations.
2118
2119 NOTE:
2120 This is called automatically when exiting the with
2121 statement
2122
2123 query(hash)
2124 Query the provider for subtitles.
2125
2126 Arguments should match as much as possible the actual
2127 parameters for querying the provider
2128
2129 Returns
2130 found subtitles.
2131
2132 Return type
2133 list of Subtitle
2134
2135 Raise ProviderError
2136
2137 list_subtitles(video, languages)
2138 List subtitles for the video with the given languages.
2139
2140 This will call the query() method internally. The parame‐
2141 ters passed to the query() method may vary depending on
2142 the amount of information available in the video.
2143
2144 Parameters
2145
2146 · video (Video) – video to list subtitles for.
2147
2148 · languages (set of Language) – languages to
2149 search for.
2150
2151 Returns
2152 found subtitles.
2153
2154 Return type
2155 list of Subtitle
2156
2157 Raise ProviderError
2158
2159 download_subtitle(subtitle)
2160 Download subtitle’s content.
2161
2162 Parameters
2163 subtitle (Subtitle) – subtitle to download.
2164
2165 Raise ProviderError
2166
2167 TVsubtitles
2168 class subliminal.providers.tvsubtitles.TVsubtitlesSubtitle(language,
2169 page_link, subtitle_id, series, season, episode, year, rip, release)
2170 TVsubtitles Subtitle.
2171
2172 property id
2173 Unique identifier of the subtitle
2174
2175 get_matches(video)
2176 Get the matches against the video.
2177
2178 Parameters
2179 video (Video) – the video to get the matches with.
2180
2181 Returns
2182 matches of the subtitle.
2183
2184 Return type
2185 set
2186
2187 class subliminal.providers.tvsubtitles.TVsubtitlesProvider
2188 TVsubtitles Provider.
2189
2190 initialize()
2191 Initialize the provider.
2192
2193 Must be called when starting to work with the provider.
2194 This is the place for network initialization or login
2195 operations.
2196
2197 NOTE:
2198 This is called automatically when entering the with
2199 statement
2200
2201 terminate()
2202 Terminate the provider.
2203
2204 Must be called when done with the provider. This is the
2205 place for network shutdown or logout operations.
2206
2207 NOTE:
2208 This is called automatically when exiting the with
2209 statement
2210
2211 search_show_id(series, year=None)
2212 Search the show id from the series and year.
2213
2214 Parameters
2215
2216 · series (str) – series of the episode.
2217
2218 · year (int) – year of the series, if any.
2219
2220 Returns
2221 the show id, if any.
2222
2223 Return type
2224 int
2225
2226 get_episode_ids(show_id, season)
2227 Get episode ids from the show id and the season.
2228
2229 Parameters
2230
2231 · show_id (int) – show id.
2232
2233 · season (int) – season of the episode.
2234
2235 Returns
2236 episode ids per episode number.
2237
2238 Return type
2239 dict
2240
2241 query(series, season, episode, year=None)
2242 Query the provider for subtitles.
2243
2244 Arguments should match as much as possible the actual
2245 parameters for querying the provider
2246
2247 Returns
2248 found subtitles.
2249
2250 Return type
2251 list of Subtitle
2252
2253 Raise ProviderError
2254
2255 list_subtitles(video, languages)
2256 List subtitles for the video with the given languages.
2257
2258 This will call the query() method internally. The parame‐
2259 ters passed to the query() method may vary depending on
2260 the amount of information available in the video.
2261
2262 Parameters
2263
2264 · video (Video) – video to list subtitles for.
2265
2266 · languages (set of Language) – languages to
2267 search for.
2268
2269 Returns
2270 found subtitles.
2271
2272 Return type
2273 list of Subtitle
2274
2275 Raise ProviderError
2276
2277 download_subtitle(subtitle)
2278 Download subtitle’s content.
2279
2280 Parameters
2281 subtitle (Subtitle) – subtitle to download.
2282
2283 Raise ProviderError
2284
2285 Refiners
2286 Refiners enrich a Video object by adding information to it.
2287
2288 A refiner is a simple function:
2289
2290 subliminal.refiners.refine(video, **kwargs)
2291
2292 Parameters
2293
2294 · video (Video) – the video to refine.
2295
2296 · **kwargs – additional parameters for refiners.
2297
2298 Metadata
2299 subliminal.refiners.metadata.refine(video, embedded_subtitles=True,
2300 **kwargs)
2301 Refine a video by searching its metadata.
2302
2303 Several Video attributes can be found:
2304
2305 · resolution
2306
2307 · video_codec
2308
2309 · audio_codec
2310
2311 · subtitle_languages
2312
2313 Parameters
2314 embedded_subtitles (bool) – search for embedded subti‐
2315 tles.
2316
2317 TVDB
2318 subliminal.refiners.tvdb.refine(video, **kwargs)
2319 Refine a video by searching TheTVDB.
2320
2321 NOTE:
2322 This refiner only work for instances of Episode.
2323
2324 Several attributes can be found:
2325
2326 · series
2327
2328 · year
2329
2330 · series_imdb_id
2331
2332 · series_tvdb_id
2333
2334 · title
2335
2336 · imdb_id
2337
2338 · tvdb_id
2339
2340 OMDb
2341 subliminal.refiners.omdb.refine(video, **kwargs)
2342 Refine a video by searching OMDb API.
2343
2344 Several Episode attributes can be found:
2345
2346 · series
2347
2348 · year
2349
2350 · series_imdb_id
2351
2352 Similarly, for a Movie:
2353
2354 · title
2355
2356 · year
2357
2358 · imdb_id
2359
2360 Extensions
2361 class subliminal.extensions.RegistrableExtensionManager(namespace,
2362 internal_extensions, **kwargs)
2363 :class:~stevedore.extensions.ExtensionManager` with support for
2364 registration.
2365
2366 It allows loading of internal extensions without setup and reg‐
2367 istering/unregistering additional extensions.
2368
2369 Loading is done in this order:
2370
2371 · Entry point extensions
2372
2373 · Internal extensions
2374
2375 · Registered extensions
2376
2377 Parameters
2378
2379 · namespace (str) – namespace argument for :class:~steve‐
2380 dore.extensions.ExtensionManager`.
2381
2382 · internal_extensions (list) – internal extensions to use
2383 with entry point syntax.
2384
2385 · **kwargs – additional parameters for the :class:~steve‐
2386 dore.extensions.ExtensionManager` constructor.
2387
2388 registered_extensions = None
2389 Registered extensions with entry point syntax
2390
2391 internal_extensions = None
2392 Internal extensions with entry point syntax
2393
2394 register(entry_point)
2395 Register an extension
2396
2397 Parameters
2398 entry_point (str) – extension to register (entry
2399 point syntax).
2400
2401 Raise ValueError if already registered.
2402
2403 unregister(entry_point)
2404 Unregister a provider
2405
2406 Parameters
2407 entry_point (str) – provider to unregister (entry
2408 point syntax).
2409
2410 subliminal.extensions.provider_manager = <subliminal.extensions.Regis‐
2411 trableExtensionManager object>
2412 Provider manager
2413
2414 subliminal.extensions.refiner_manager = <subliminal.extensions.Regis‐
2415 trableExtensionManager object>
2416 Refiner manager
2417
2418 Score
2419 This module provides the default implementation of the compute_score
2420 parameter in download_best_subtitles() and download_best_subtitles().
2421
2422 NOTE:
2423 To avoid unnecessary dependency on sympy and boost subliminal’s
2424 import time, the resulting scores are hardcoded here and manually
2425 updated when the set of equations change.
2426
2427 Available matches:
2428
2429 · hash
2430
2431 · title
2432
2433 · year
2434
2435 · series
2436
2437 · season
2438
2439 · episode
2440
2441 · release_group
2442
2443 · format
2444
2445 · audio_codec
2446
2447 · resolution
2448
2449 · hearing_impaired
2450
2451 · video_codec
2452
2453 · series_imdb_id
2454
2455 · imdb_id
2456
2457 · tvdb_id
2458
2459 subliminal.score.episode_scores = {'audio_codec': 3, 'episode': 30,
2460 'format': 7, 'hash': 359, 'hearing_impaired': 1, 'release_group': 15,
2461 'resolution': 2, 'season': 30, 'series': 180, 'video_codec': 2, 'year':
2462 90}
2463 Scores for episodes
2464
2465 subliminal.score.movie_scores = {'audio_codec': 3, 'format': 7, 'hash':
2466 119, 'hearing_impaired': 1, 'release_group': 15, 'resolution': 2,
2467 'title': 60, 'video_codec': 2, 'year': 30}
2468 Scores for movies
2469
2470 subliminal.score.equivalent_release_groups = ({'DIMENSION', 'LOL'},
2471 {'FLEET', 'ASAP', 'IMMERSE'})
2472 Equivalent release groups
2473
2474 subliminal.score.get_equivalent_release_groups(release_group)
2475 Get all the equivalents of the given release group.
2476
2477 Parameters
2478 release_group (str) – the release group to get the equiv‐
2479 alents of.
2480
2481 Returns
2482 the equivalent release groups.
2483
2484 Return type
2485 set
2486
2487 subliminal.score.get_scores(video)
2488 Get the scores dict for the given video.
2489
2490 This will return either episode_scores or movie_scores based on
2491 the type of the video.
2492
2493 Parameters
2494 video (Video) – the video to compute the score against.
2495
2496 Returns
2497 the scores dict.
2498
2499 Return type
2500 dict
2501
2502 subliminal.score.compute_score(subtitle, video, hearing_impaired=None)
2503 Compute the score of the subtitle against the video with hear‐
2504 ing_impaired preference.
2505
2506 compute_score() uses the Subtitle.get_matches method and applies
2507 the scores (either from episode_scores or movie_scores) after
2508 some processing.
2509
2510 Parameters
2511
2512 · subtitle (Subtitle) – the subtitle to compute the score
2513 of.
2514
2515 · video (Video) – the video to compute the score against.
2516
2517 · hearing_impaired (bool) – hearing impaired preference.
2518
2519 Returns
2520 score of the subtitle.
2521
2522 Return type
2523 int
2524
2525 Utils
2526 subliminal.utils.hash_opensubtitles(video_path)
2527 Compute a hash using OpenSubtitles’ algorithm.
2528
2529 Parameters
2530 video_path (str) – path of the video.
2531
2532 Returns
2533 the hash.
2534
2535 Return type
2536 str
2537
2538 subliminal.utils.hash_thesubdb(video_path)
2539 Compute a hash using TheSubDB’s algorithm.
2540
2541 Parameters
2542 video_path (str) – path of the video.
2543
2544 Returns
2545 the hash.
2546
2547 Return type
2548 str
2549
2550 subliminal.utils.hash_napiprojekt(video_path)
2551 Compute a hash using NapiProjekt’s algorithm.
2552
2553 Parameters
2554 video_path (str) – path of the video.
2555
2556 Returns
2557 the hash.
2558
2559 Return type
2560 str
2561
2562 subliminal.utils.hash_shooter(video_path)
2563 Compute a hash using Shooter’s algorithm
2564
2565 Parameters
2566 video_path (string) – path of the video
2567
2568 Returns
2569 the hash
2570
2571 Return type
2572 string
2573
2574 subliminal.utils.sanitize(string, ignore_characters=None)
2575 Sanitize a string to strip special characters.
2576
2577 Parameters
2578
2579 · string (str) – the string to sanitize.
2580
2581 · ignore_characters (set) – characters to ignore.
2582
2583 Returns
2584 the sanitized string.
2585
2586 Return type
2587 str
2588
2589 subliminal.utils.sanitize_release_group(string)
2590 Sanitize a release_group string to remove content in square
2591 brackets.
2592
2593 Parameters
2594 string (str) – the release group to sanitize.
2595
2596 Returns
2597 the sanitized release group.
2598
2599 Return type
2600 str
2601
2602 subliminal.utils.timestamp(date)
2603 Get the timestamp of the date, python2/3 compatible
2604
2605 Parameters
2606 date (datetime.datetime) – the utc date.
2607
2608 Returns
2609 the timestamp of the date.
2610
2611 Return type
2612 float
2613
2614 Cache
2615 subliminal.cache.SHOW_EXPIRATION_TIME
2616 Expiration time for show caching
2617
2618 subliminal.cache.EPISODE_EXPIRATION_TIME
2619 Expiration time for episode caching
2620
2621 subliminal.cache.REFINER_EXPIRATION_TIME
2622 Expiration time for scraper searches
2623
2624 subliminal.cache.region
2625 The CacheRegion
2626
2627 Refer to dogpile.cache’s region configuration documentation to see how
2628 to configure the region
2629
2630 CLI
2631 Subliminal uses click to provide a powerful CLI.
2632
2633 class subliminal.cli.MutexLock(filename)
2634 MutexLock is a thread-based rw lock based on dogpile.core.Read‐
2635 WriteMutex.
2636
2637 acquire_read_lock(wait)
2638 Acquire a ‘reader’ lock.
2639
2640 Raises NotImplementedError by default, must be imple‐
2641 mented by subclasses.
2642
2643 acquire_write_lock(wait)
2644 Acquire a ‘write’ lock.
2645
2646 Raises NotImplementedError by default, must be imple‐
2647 mented by subclasses.
2648
2649 release_read_lock()
2650 Release a ‘reader’ lock.
2651
2652 Raises NotImplementedError by default, must be imple‐
2653 mented by subclasses.
2654
2655 release_write_lock()
2656 Release a ‘writer’ lock.
2657
2658 Raises NotImplementedError by default, must be imple‐
2659 mented by subclasses.
2660
2661 class subliminal.cli.Config(path)
2662 A ConfigParser wrapper to store configuration.
2663
2664 Interaction with the configuration is done with the properties.
2665
2666 Parameters
2667 path (str) – path to the configuration file.
2668
2669 path = None
2670 Path to the configuration file
2671
2672 config = None
2673 The underlying configuration object
2674
2675 read() Read the configuration from path
2676
2677 write()
2678 Write the configuration to path
2679
2680 class subliminal.cli.LanguageParamType
2681 ParamType for languages that returns a Language
2682
2683 convert(value, param, ctx)
2684 Converts the value. This is not invoked for values that
2685 are None (the missing value).
2686
2687 class subliminal.cli.AgeParamType
2688 ParamType for age strings that returns a timedelta
2689
2690 An age string is in the form number + identifier with possible
2691 identifiers:
2692
2693 · w for weeks
2694
2695 · d for days
2696
2697 · h for hours
2698
2699 The form can be specified multiple times but only with that
2700 idenfier ordering. For example:
2701
2702 · 1w2d4h for 1 week, 2 days and 4 hours
2703
2704 · 2w for 2 weeks
2705
2706 · 3w6h for 3 weeks and 6 hours
2707
2708 convert(value, param, ctx)
2709 Converts the value. This is not invoked for values that
2710 are None (the missing value).
2711
2712 Exceptions
2713 exception subliminal.exceptions.Error
2714 Base class for exceptions in subliminal.
2715
2716 exception subliminal.exceptions.ProviderError
2717 Exception raised by providers.
2718
2719 exception subliminal.exceptions.ConfigurationError
2720 Exception raised by providers when badly configured.
2721
2722 exception subliminal.exceptions.AuthenticationError
2723 Exception raised by providers when authentication failed.
2724
2725 exception subliminal.exceptions.TooManyRequests
2726 Exception raised by providers when too many requests are made.
2727
2728 exception subliminal.exceptions.DownloadLimitExceeded
2729 Exception raised by providers when download limit is exceeded.
2730
2732 MIT
2733
2734 · genindex
2735
2736 · modindex
2737
2738 · search
2739
2741 Antoine Bertin
2742
2744 2020, Antoine Bertin
2745
2746
2747
2748
27492.0.5 Jan 31, 2020 SUBLIMINAL(1)