subliminal 2.0.5__tar.gz → 2.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. subliminal-2.2.0/.dockerignore +68 -0
  2. subliminal-2.2.0/.pre-commit-config.yaml +33 -0
  3. subliminal-2.2.0/.readthedocs.yaml +19 -0
  4. subliminal-2.2.0/CONTRIBUTING.md +19 -0
  5. subliminal-2.2.0/Dockerfile +33 -0
  6. {subliminal-2.0.5 → subliminal-2.2.0}/HISTORY.rst +75 -0
  7. subliminal-2.2.0/MANIFEST.in +13 -0
  8. subliminal-2.2.0/PKG-INFO +518 -0
  9. {subliminal-2.0.5 → subliminal-2.2.0}/README.rst +2 -0
  10. subliminal-2.2.0/docs/Makefile +192 -0
  11. subliminal-2.2.0/docs/api/cache.rst +21 -0
  12. subliminal-2.2.0/docs/api/cli.rst +3 -0
  13. subliminal-2.2.0/docs/api/core.rst +7 -0
  14. subliminal-2.2.0/docs/api/exceptions.rst +3 -0
  15. subliminal-2.2.0/docs/api/extensions.rst +3 -0
  16. subliminal-2.2.0/docs/api/providers.rst +38 -0
  17. subliminal-2.2.0/docs/api/refiners.rst +25 -0
  18. subliminal-2.2.0/docs/api/score.rst +3 -0
  19. subliminal-2.2.0/docs/api/subtitle.rst +7 -0
  20. subliminal-2.2.0/docs/api/utils.rst +3 -0
  21. subliminal-2.2.0/docs/api/video.rst +7 -0
  22. subliminal-2.2.0/docs/cassettes/test_usage.yaml +566 -0
  23. subliminal-2.2.0/docs/conf.py +316 -0
  24. subliminal-2.2.0/docs/config.toml +26 -0
  25. subliminal-2.2.0/docs/conftest.py +32 -0
  26. subliminal-2.2.0/docs/index.rst +52 -0
  27. subliminal-2.2.0/docs/make.bat +263 -0
  28. subliminal-2.2.0/docs/user/cli.rst +18 -0
  29. subliminal-2.2.0/docs/user/how_it_works.rst +51 -0
  30. subliminal-2.2.0/docs/user/provider_guide.rst +96 -0
  31. subliminal-2.2.0/docs/user/usage.rst +159 -0
  32. subliminal-2.2.0/pyproject.toml +263 -0
  33. subliminal-2.2.0/setup.cfg +4 -0
  34. subliminal-2.2.0/subliminal/__init__.py +62 -0
  35. subliminal-2.2.0/subliminal/cache.py +32 -0
  36. subliminal-2.2.0/subliminal/cli.py +597 -0
  37. subliminal-2.2.0/subliminal/converters/__init__.py +7 -0
  38. subliminal-2.2.0/subliminal/converters/addic7ed.py +60 -0
  39. subliminal-2.2.0/subliminal/converters/opensubtitlescom.py +50 -0
  40. subliminal-2.2.0/subliminal/converters/shooter.py +37 -0
  41. subliminal-2.2.0/subliminal/converters/thesubdb.py +50 -0
  42. subliminal-2.2.0/subliminal/converters/tvsubtitles.py +43 -0
  43. {subliminal-2.0.5 → subliminal-2.2.0}/subliminal/core.py +278 -153
  44. {subliminal-2.0.5 → subliminal-2.2.0}/subliminal/exceptions.py +17 -3
  45. subliminal-2.2.0/subliminal/extensions.py +155 -0
  46. subliminal-2.2.0/subliminal/matches.py +269 -0
  47. subliminal-2.2.0/subliminal/providers/__init__.py +272 -0
  48. subliminal-2.2.0/subliminal/providers/addic7ed.py +633 -0
  49. subliminal-2.2.0/subliminal/providers/gestdown.py +422 -0
  50. subliminal-2.2.0/subliminal/providers/napiprojekt.py +176 -0
  51. subliminal-2.2.0/subliminal/providers/opensubtitles.py +434 -0
  52. subliminal-2.2.0/subliminal/providers/opensubtitlescom.py +849 -0
  53. subliminal-2.2.0/subliminal/providers/podnapisi.py +252 -0
  54. subliminal-2.2.0/subliminal/providers/tvsubtitles.py +332 -0
  55. {subliminal-2.0.5 → subliminal-2.2.0}/subliminal/refiners/__init__.py +1 -1
  56. subliminal-2.2.0/subliminal/refiners/hash.py +156 -0
  57. subliminal-2.2.0/subliminal/refiners/metadata.py +113 -0
  58. subliminal-2.2.0/subliminal/refiners/omdb.py +321 -0
  59. subliminal-2.2.0/subliminal/refiners/tmdb.py +339 -0
  60. subliminal-2.2.0/subliminal/refiners/tvdb.py +482 -0
  61. subliminal-2.2.0/subliminal/score.py +404 -0
  62. subliminal-2.2.0/subliminal/subtitle.py +478 -0
  63. subliminal-2.2.0/subliminal/utils.py +183 -0
  64. subliminal-2.2.0/subliminal/video.py +479 -0
  65. subliminal-2.2.0/subliminal.egg-info/PKG-INFO +518 -0
  66. subliminal-2.2.0/subliminal.egg-info/SOURCES.txt +268 -0
  67. {subliminal-2.0.5 → subliminal-2.2.0}/subliminal.egg-info/entry_points.txt +7 -5
  68. subliminal-2.2.0/subliminal.egg-info/requires.txt +40 -0
  69. subliminal-2.2.0/tests/cassettes/addic7ed/test_download_subtitle.yaml +8470 -0
  70. subliminal-2.2.0/tests/cassettes/addic7ed/test_get_show_id.yaml +5066 -0
  71. subliminal-2.2.0/tests/cassettes/addic7ed/test_get_show_id_country.yaml +5066 -0
  72. subliminal-2.2.0/tests/cassettes/addic7ed/test_get_show_id_quote_dots_mixed_case.yaml +5065 -0
  73. subliminal-2.2.0/tests/cassettes/addic7ed/test_get_show_id_with_comma.yaml +5066 -0
  74. subliminal-2.2.0/tests/cassettes/addic7ed/test_get_show_id_year.yaml +5066 -0
  75. subliminal-2.2.0/tests/cassettes/addic7ed/test_get_show_ids.yaml +5066 -0
  76. subliminal-2.2.0/tests/cassettes/addic7ed/test_list_subtitles.yaml +8013 -0
  77. subliminal-2.2.0/tests/cassettes/addic7ed/test_list_subtitles_episode_alternative_series.yaml +10986 -0
  78. subliminal-2.2.0/tests/cassettes/addic7ed/test_list_subtitles_show_with_asterisk.yaml +10934 -0
  79. subliminal-2.2.0/tests/cassettes/addic7ed/test_login.yaml +60 -0
  80. subliminal-2.2.0/tests/cassettes/addic7ed/test_logout.yaml +61 -0
  81. subliminal-2.2.0/tests/cassettes/addic7ed/test_query.yaml +8013 -0
  82. subliminal-2.2.0/tests/cassettes/addic7ed/test_query_no_year.yaml +5190 -0
  83. subliminal-2.2.0/tests/cassettes/addic7ed/test_query_parsing.yaml +7635 -0
  84. subliminal-2.2.0/tests/cassettes/addic7ed/test_query_parsing_colon.yaml +5912 -0
  85. subliminal-2.2.0/tests/cassettes/addic7ed/test_query_parsing_dash.yaml +6037 -0
  86. subliminal-2.2.0/tests/cassettes/addic7ed/test_query_parsing_quote_dots_mixed_case.yaml +2157 -0
  87. subliminal-2.2.0/tests/cassettes/addic7ed/test_query_wrong_series.yaml +82 -0
  88. subliminal-2.2.0/tests/cassettes/addic7ed/test_query_year.yaml +5856 -0
  89. subliminal-2.2.0/tests/cassettes/addic7ed/test_search_show_id.yaml +637 -0
  90. subliminal-2.2.0/tests/cassettes/addic7ed/test_search_show_id_error.yaml +120 -0
  91. subliminal-2.2.0/tests/cassettes/addic7ed/test_search_show_id_incomplete.yaml +640 -0
  92. subliminal-2.2.0/tests/cassettes/addic7ed/test_search_show_id_no_year.yaml +584 -0
  93. subliminal-2.2.0/tests/cassettes/addic7ed/test_search_show_id_quote.yaml +611 -0
  94. subliminal-2.2.0/tests/cassettes/addic7ed/test_search_show_id_year.yaml +311 -0
  95. subliminal-2.2.0/tests/cassettes/addic7ed/test_search_show_ids_quote_dots_mixed_case.yaml +634 -0
  96. subliminal-2.2.0/tests/cassettes/addic7ed/test_search_show_ids_with_comma.yaml +287 -0
  97. subliminal-2.2.0/tests/cassettes/addic7ed/test_search_show_ids_with_country.yaml +826 -0
  98. subliminal-2.2.0/tests/cassettes/core/test_download_bad_subtitle.yaml +790 -0
  99. subliminal-2.2.0/tests/cassettes/core/test_download_best_subtitles.yaml +953 -0
  100. subliminal-2.2.0/tests/cassettes/core/test_download_best_subtitles_min_score.yaml +116 -0
  101. subliminal-2.2.0/tests/cassettes/core/test_download_best_subtitles_only_one.yaml +557 -0
  102. subliminal-2.2.0/tests/cassettes/gestdown/test_download_subtitle.yaml +564 -0
  103. subliminal-2.2.0/tests/cassettes/gestdown/test_download_with_bom.yaml +578 -0
  104. subliminal-2.2.0/tests/cassettes/gestdown/test_get_title_and_show_id_alternative_name.yaml +105 -0
  105. subliminal-2.2.0/tests/cassettes/gestdown/test_get_title_and_show_id_no_year.yaml +54 -0
  106. subliminal-2.2.0/tests/cassettes/gestdown/test_get_title_and_show_id_only_title.yaml +56 -0
  107. subliminal-2.2.0/tests/cassettes/gestdown/test_get_title_and_show_id_with_tvdb_id.yaml +55 -0
  108. subliminal-2.2.0/tests/cassettes/gestdown/test_list_subtitles.yaml +165 -0
  109. subliminal-2.2.0/tests/cassettes/gestdown/test_list_subtitles_episode_alternative_series.yaml +176 -0
  110. subliminal-2.2.0/tests/cassettes/gestdown/test_query.yaml +110 -0
  111. subliminal-2.2.0/tests/cassettes/gestdown/test_query_all_series.yaml +134 -0
  112. subliminal-2.2.0/tests/cassettes/gestdown/test_query_no_language.yaml +57 -0
  113. subliminal-2.2.0/tests/cassettes/gestdown/test_query_parsing.yaml +108 -0
  114. subliminal-2.2.0/tests/cassettes/gestdown/test_query_parsing_colon.yaml +108 -0
  115. subliminal-2.2.0/tests/cassettes/gestdown/test_query_parsing_dash.yaml +108 -0
  116. subliminal-2.2.0/tests/cassettes/gestdown/test_query_parsing_quote_dots_mixed_case.yaml +109 -0
  117. subliminal-2.2.0/tests/cassettes/gestdown/test_query_wrong_series.yaml +48 -0
  118. subliminal-2.2.0/tests/cassettes/gestdown/test_search_show_id.yaml +55 -0
  119. subliminal-2.2.0/tests/cassettes/gestdown/test_search_show_id_error.yaml +52 -0
  120. subliminal-2.2.0/tests/cassettes/gestdown/test_search_show_id_incomplete.yaml +55 -0
  121. subliminal-2.2.0/tests/cassettes/gestdown/test_search_show_id_no_year.yaml +55 -0
  122. subliminal-2.2.0/tests/cassettes/gestdown/test_search_show_id_quote.yaml +55 -0
  123. subliminal-2.2.0/tests/cassettes/gestdown/test_search_show_series_tvdb_id.yaml +57 -0
  124. subliminal-2.2.0/tests/cassettes/gestdown/test_show_with_asterisk.yaml +162 -0
  125. subliminal-2.2.0/tests/cassettes/napiprojekt/test_download_subtitles.yaml +865 -0
  126. subliminal-2.2.0/tests/cassettes/napiprojekt/test_list_subtitles.yaml +439 -0
  127. subliminal-2.2.0/tests/cassettes/napiprojekt/test_query_microdvd.yaml +865 -0
  128. subliminal-2.2.0/tests/cassettes/napiprojekt/test_query_srt.yaml +818 -0
  129. subliminal-2.2.0/tests/cassettes/napiprojekt/test_query_srt_reencode.yaml +1034 -0
  130. subliminal-2.2.0/tests/cassettes/napiprojekt/test_query_wrong_hash.yaml +43 -0
  131. subliminal-2.2.0/tests/cassettes/omdb/test_get_id.yaml +61 -0
  132. subliminal-2.2.0/tests/cassettes/omdb/test_get_title.yaml +61 -0
  133. subliminal-2.2.0/tests/cassettes/omdb/test_get_wrong_id.yaml +52 -0
  134. subliminal-2.2.0/tests/cassettes/omdb/test_get_wrong_title.yaml +52 -0
  135. subliminal-2.2.0/tests/cassettes/omdb/test_refine_episode.yaml +53 -0
  136. subliminal-2.2.0/tests/cassettes/omdb/test_refine_episode_original_series.yaml +295 -0
  137. subliminal-2.2.0/tests/cassettes/omdb/test_refine_episode_with_country.yaml +56 -0
  138. subliminal-2.2.0/tests/cassettes/omdb/test_refine_episode_with_country_hoc_us.yaml +54 -0
  139. subliminal-2.2.0/tests/cassettes/omdb/test_refine_episode_year.yaml +58 -0
  140. subliminal-2.2.0/tests/cassettes/omdb/test_refine_movie.yaml +178 -0
  141. subliminal-2.2.0/tests/cassettes/omdb/test_refine_movie_guess_alternative_title.yaml +52 -0
  142. subliminal-2.2.0/tests/cassettes/omdb/test_search.yaml +61 -0
  143. subliminal-2.2.0/tests/cassettes/omdb/test_search_page.yaml +61 -0
  144. subliminal-2.2.0/tests/cassettes/omdb/test_search_type.yaml +61 -0
  145. subliminal-2.2.0/tests/cassettes/omdb/test_search_wrong_title.yaml +52 -0
  146. subliminal-2.2.0/tests/cassettes/omdb/test_search_year.yaml +61 -0
  147. subliminal-2.2.0/tests/cassettes/opensubtitles/test_download_subtitle.yaml +1370 -0
  148. subliminal-2.2.0/tests/cassettes/opensubtitles/test_list_subtitles_episode.yaml +473 -0
  149. subliminal-2.2.0/tests/cassettes/opensubtitles/test_list_subtitles_movie.yaml +689 -0
  150. subliminal-2.2.0/tests/cassettes/opensubtitles/test_list_subtitles_movie_no_hash.yaml +458 -0
  151. subliminal-2.2.0/tests/cassettes/opensubtitles/test_login_bad_password.yaml +115 -0
  152. subliminal-2.2.0/tests/cassettes/opensubtitles/test_login_vip_bad_password.yaml +115 -0
  153. subliminal-2.2.0/tests/cassettes/opensubtitles/test_login_vip_login.yaml +115 -0
  154. subliminal-2.2.0/tests/cassettes/opensubtitles/test_no_operation.yaml +388 -0
  155. subliminal-2.2.0/tests/cassettes/opensubtitles/test_query_hash_size.yaml +474 -0
  156. subliminal-2.2.0/tests/cassettes/opensubtitles/test_query_imdb_id.yaml +452 -0
  157. subliminal-2.2.0/tests/cassettes/opensubtitles/test_query_not_enough_information.yaml +293 -0
  158. subliminal-2.2.0/tests/cassettes/opensubtitles/test_query_query_episode.yaml +446 -0
  159. subliminal-2.2.0/tests/cassettes/opensubtitles/test_query_query_movie.yaml +471 -0
  160. subliminal-2.2.0/tests/cassettes/opensubtitles/test_query_query_season_episode.yaml +450 -0
  161. subliminal-2.2.0/tests/cassettes/opensubtitles/test_query_tag_movie.yaml +414 -0
  162. subliminal-2.2.0/tests/cassettes/opensubtitles/test_query_wrong_hash_wrong_size.yaml +422 -0
  163. subliminal-2.2.0/tests/cassettes/opensubtitles/test_tag_match.yaml +532 -0
  164. subliminal-2.2.0/tests/cassettes/opensubtitlescom/test_download_subtitle.yaml +2140 -0
  165. subliminal-2.2.0/tests/cassettes/opensubtitlescom/test_list_subtitles_episode.yaml +350 -0
  166. subliminal-2.2.0/tests/cassettes/opensubtitlescom/test_list_subtitles_movie.yaml +781 -0
  167. subliminal-2.2.0/tests/cassettes/opensubtitlescom/test_list_subtitles_movie_no_hash.yaml +162 -0
  168. subliminal-2.2.0/tests/cassettes/opensubtitlescom/test_login.yaml +103 -0
  169. subliminal-2.2.0/tests/cassettes/opensubtitlescom/test_login_bad_password.yaml +98 -0
  170. subliminal-2.2.0/tests/cassettes/opensubtitlescom/test_logout.yaml +103 -0
  171. subliminal-2.2.0/tests/cassettes/opensubtitlescom/test_query_hash_size.yaml +205 -0
  172. subliminal-2.2.0/tests/cassettes/opensubtitlescom/test_query_imdb_id.yaml +183 -0
  173. subliminal-2.2.0/tests/cassettes/opensubtitlescom/test_query_query_episode.yaml +382 -0
  174. subliminal-2.2.0/tests/cassettes/opensubtitlescom/test_query_query_movie.yaml +173 -0
  175. subliminal-2.2.0/tests/cassettes/opensubtitlescom/test_query_query_season_episode.yaml +334 -0
  176. subliminal-2.2.0/tests/cassettes/opensubtitlescom/test_query_tag_movie.yaml +164 -0
  177. subliminal-2.2.0/tests/cassettes/opensubtitlescom/test_query_wrong_hash_wrong_size.yaml +116 -0
  178. subliminal-2.2.0/tests/cassettes/opensubtitlescom/test_tag_match.yaml +529 -0
  179. subliminal-2.2.0/tests/cassettes/opensubtitlescom/test_user_infos.yaml +202 -0
  180. subliminal-2.2.0/tests/cassettes/podnapisi/test_download_subtitle.yaml +1039 -0
  181. subliminal-2.2.0/tests/cassettes/podnapisi/test_download_subtitles_with_title_unicode.yaml +1020 -0
  182. subliminal-2.2.0/tests/cassettes/podnapisi/test_list_subtitles_episode.yaml +515 -0
  183. subliminal-2.2.0/tests/cassettes/podnapisi/test_list_subtitles_episode_alternative_series.yaml +367 -0
  184. subliminal-2.2.0/tests/cassettes/podnapisi/test_list_subtitles_movie.yaml +438 -0
  185. subliminal-2.2.0/tests/cassettes/podnapisi/test_query_episode.yaml +174 -0
  186. subliminal-2.2.0/tests/cassettes/podnapisi/test_query_movie.yaml +362 -0
  187. subliminal-2.2.0/tests/cassettes/tmdb/test_get_movie_id.yaml +155 -0
  188. subliminal-2.2.0/tests/cassettes/tmdb/test_get_movie_id_failed.yaml +65 -0
  189. subliminal-2.2.0/tests/cassettes/tmdb/test_get_series_id.yaml +72 -0
  190. subliminal-2.2.0/tests/cassettes/tmdb/test_get_series_wrong_id.yaml +65 -0
  191. subliminal-2.2.0/tests/cassettes/tmdb/test_refine_episode.yaml +305 -0
  192. subliminal-2.2.0/tests/cassettes/tmdb/test_refine_episode_original_series.yaml +305 -0
  193. subliminal-2.2.0/tests/cassettes/tmdb/test_refine_episode_with_country.yaml +302 -0
  194. subliminal-2.2.0/tests/cassettes/tmdb/test_refine_episode_with_country_hoc_us.yaml +244 -0
  195. subliminal-2.2.0/tests/cassettes/tmdb/test_refine_episode_year.yaml +210 -0
  196. subliminal-2.2.0/tests/cassettes/tmdb/test_refine_movie.yaml +222 -0
  197. subliminal-2.2.0/tests/cassettes/tmdb/test_refine_movie_guess_alternative_title.yaml +130 -0
  198. subliminal-2.2.0/tests/cassettes/tmdb/test_search_movie.yaml +155 -0
  199. subliminal-2.2.0/tests/cassettes/tmdb/test_search_movie_page.yaml +148 -0
  200. subliminal-2.2.0/tests/cassettes/tmdb/test_search_movie_wrong_title.yaml +65 -0
  201. subliminal-2.2.0/tests/cassettes/tmdb/test_search_movie_year.yaml +71 -0
  202. subliminal-2.2.0/tests/cassettes/tmdb/test_search_series.yaml +72 -0
  203. subliminal-2.2.0/tests/cassettes/tmdb/test_search_series_wrong_name.yaml +65 -0
  204. subliminal-2.2.0/tests/cassettes/tvdb/test_get_series.yaml +109 -0
  205. subliminal-2.2.0/tests/cassettes/tvdb/test_get_series_actors.yaml +126 -0
  206. subliminal-2.2.0/tests/cassettes/tvdb/test_get_series_actors_wrong_id.yaml +100 -0
  207. subliminal-2.2.0/tests/cassettes/tvdb/test_get_series_wrong_id.yaml +100 -0
  208. subliminal-2.2.0/tests/cassettes/tvdb/test_login.yaml +50 -0
  209. subliminal-2.2.0/tests/cassettes/tvdb/test_login_error.yaml +52 -0
  210. subliminal-2.2.0/tests/cassettes/tvdb/test_query_series_episodes.yaml +111 -0
  211. subliminal-2.2.0/tests/cassettes/tvdb/test_query_series_episodes_wrong_season.yaml +100 -0
  212. subliminal-2.2.0/tests/cassettes/tvdb/test_refine.yaml +287 -0
  213. subliminal-2.2.0/tests/cassettes/tvdb/test_refine_ambiguous.yaml +476 -0
  214. subliminal-2.2.0/tests/cassettes/tvdb/test_refine_ambiguous_2.yaml +857 -0
  215. subliminal-2.2.0/tests/cassettes/tvdb/test_refine_episode_alternative_series.yaml +232 -0
  216. subliminal-2.2.0/tests/cassettes/tvdb/test_refine_episode_no_year.yaml +537 -0
  217. subliminal-2.2.0/tests/cassettes/tvdb/test_refine_episode_partial.yaml +496 -0
  218. subliminal-2.2.0/tests/cassettes/tvdb/test_refine_episode_with_comma.yaml +254 -0
  219. subliminal-2.2.0/tests/cassettes/tvdb/test_refine_episode_with_country.yaml +325 -0
  220. subliminal-2.2.0/tests/cassettes/tvdb/test_refine_episode_with_country_hoc_us.yaml +257 -0
  221. subliminal-2.2.0/tests/cassettes/tvdb/test_refine_episode_year.yaml +535 -0
  222. subliminal-2.2.0/tests/cassettes/tvdb/test_refresh_token.yaml +100 -0
  223. subliminal-2.2.0/tests/cassettes/tvdb/test_search_series.yaml +104 -0
  224. subliminal-2.2.0/tests/cassettes/tvdb/test_search_series_wrong_name.yaml +100 -0
  225. subliminal-2.2.0/tests/cassettes/tvdb/test_token_needs_refresh.yaml +50 -0
  226. subliminal-2.2.0/tests/cassettes/tvsubtitles/test_download_subtitle.yaml +1650 -0
  227. subliminal-2.2.0/tests/cassettes/tvsubtitles/test_download_subtitle_with_quote.yaml +1669 -0
  228. subliminal-2.2.0/tests/cassettes/tvsubtitles/test_get_episode_ids.yaml +901 -0
  229. subliminal-2.2.0/tests/cassettes/tvsubtitles/test_get_episode_ids_wrong_season.yaml +225 -0
  230. subliminal-2.2.0/tests/cassettes/tvsubtitles/test_list_subtitles.yaml +1323 -0
  231. subliminal-2.2.0/tests/cassettes/tvsubtitles/test_list_subtitles_episode_alternative_series.yaml +914 -0
  232. subliminal-2.2.0/tests/cassettes/tvsubtitles/test_query.yaml +1323 -0
  233. subliminal-2.2.0/tests/cassettes/tvsubtitles/test_query_no_year.yaml +743 -0
  234. subliminal-2.2.0/tests/cassettes/tvsubtitles/test_query_with_quote.yaml +1198 -0
  235. subliminal-2.2.0/tests/cassettes/tvsubtitles/test_query_wrong_episode.yaml +898 -0
  236. subliminal-2.2.0/tests/cassettes/tvsubtitles/test_query_wrong_series.yaml +219 -0
  237. subliminal-2.2.0/tests/cassettes/tvsubtitles/test_search_show_id.yaml +233 -0
  238. subliminal-2.2.0/tests/cassettes/tvsubtitles/test_search_show_id_ambiguous.yaml +418 -0
  239. subliminal-2.2.0/tests/cassettes/tvsubtitles/test_search_show_id_error.yaml +235 -0
  240. subliminal-2.2.0/tests/cassettes/tvsubtitles/test_search_show_id_incomplete.yaml +234 -0
  241. subliminal-2.2.0/tests/cassettes/tvsubtitles/test_search_show_id_no_year.yaml +222 -0
  242. subliminal-2.2.0/tests/cassettes/tvsubtitles/test_search_show_id_uk.yaml +234 -0
  243. subliminal-2.2.0/tests/cassettes/tvsubtitles/test_search_show_id_us.yaml +305 -0
  244. subliminal-2.2.0/tests/cassettes/tvsubtitles/test_search_show_id_year_in_title.yaml +222 -0
  245. subliminal-2.2.0/tests/conftest.py +492 -0
  246. subliminal-2.2.0/tests/providers/test_addic7ed.py +630 -0
  247. subliminal-2.2.0/tests/providers/test_gestdown.py +432 -0
  248. subliminal-2.2.0/tests/providers/test_napiprojekt.py +116 -0
  249. subliminal-2.2.0/tests/providers/test_opensubtitles.py +475 -0
  250. subliminal-2.2.0/tests/providers/test_opensubtitlescom.py +456 -0
  251. subliminal-2.2.0/tests/providers/test_podnapisi.py +283 -0
  252. subliminal-2.2.0/tests/providers/test_tvsubtitles.py +339 -0
  253. subliminal-2.2.0/tests/refiners/test_hash.py +19 -0
  254. subliminal-2.2.0/tests/refiners/test_omdb.py +197 -0
  255. subliminal-2.2.0/tests/refiners/test_tmdb.py +216 -0
  256. subliminal-2.2.0/tests/refiners/test_tvdb.py +373 -0
  257. subliminal-2.2.0/tests/test_cache.py +46 -0
  258. subliminal-2.2.0/tests/test_core.py +704 -0
  259. subliminal-2.2.0/tests/test_extensions.py +80 -0
  260. subliminal-2.2.0/tests/test_matches.py +143 -0
  261. subliminal-2.2.0/tests/test_provider.py +51 -0
  262. subliminal-2.2.0/tests/test_score.py +142 -0
  263. subliminal-2.2.0/tests/test_subtitle.py +163 -0
  264. subliminal-2.2.0/tests/test_utils.py +5 -0
  265. subliminal-2.2.0/tests/test_video.py +179 -0
  266. subliminal-2.2.0/tox.ini +7 -0
  267. subliminal-2.0.5/MANIFEST.in +0 -1
  268. subliminal-2.0.5/PKG-INFO +0 -403
  269. subliminal-2.0.5/requirements.txt +0 -1
  270. subliminal-2.0.5/setup.cfg +0 -16
  271. subliminal-2.0.5/setup.py +0 -101
  272. subliminal-2.0.5/subliminal/__init__.py +0 -21
  273. subliminal-2.0.5/subliminal/cache.py +0 -16
  274. subliminal-2.0.5/subliminal/cli.py +0 -461
  275. subliminal-2.0.5/subliminal/converters/addic7ed.py +0 -32
  276. subliminal-2.0.5/subliminal/converters/legendastv.py +0 -27
  277. subliminal-2.0.5/subliminal/converters/shooter.py +0 -23
  278. subliminal-2.0.5/subliminal/converters/thesubdb.py +0 -26
  279. subliminal-2.0.5/subliminal/converters/tvsubtitles.py +0 -25
  280. subliminal-2.0.5/subliminal/extensions.py +0 -106
  281. subliminal-2.0.5/subliminal/providers/__init__.py +0 -161
  282. subliminal-2.0.5/subliminal/providers/addic7ed.py +0 -287
  283. subliminal-2.0.5/subliminal/providers/legendastv.py +0 -448
  284. subliminal-2.0.5/subliminal/providers/napiprojekt.py +0 -103
  285. subliminal-2.0.5/subliminal/providers/opensubtitles.py +0 -294
  286. subliminal-2.0.5/subliminal/providers/podnapisi.py +0 -179
  287. subliminal-2.0.5/subliminal/providers/shooter.py +0 -79
  288. subliminal-2.0.5/subliminal/providers/subscenter.py +0 -235
  289. subliminal-2.0.5/subliminal/providers/thesubdb.py +0 -84
  290. subliminal-2.0.5/subliminal/providers/tvsubtitles.py +0 -210
  291. subliminal-2.0.5/subliminal/refiners/metadata.py +0 -99
  292. subliminal-2.0.5/subliminal/refiners/omdb.py +0 -187
  293. subliminal-2.0.5/subliminal/refiners/tvdb.py +0 -350
  294. subliminal-2.0.5/subliminal/score.py +0 -234
  295. subliminal-2.0.5/subliminal/subtitle.py +0 -255
  296. subliminal-2.0.5/subliminal/subtitles/__init__.py +0 -88
  297. subliminal-2.0.5/subliminal/subtitles/subrip.py +0 -82
  298. subliminal-2.0.5/subliminal/utils.py +0 -152
  299. subliminal-2.0.5/subliminal/video.py +0 -221
  300. subliminal-2.0.5/subliminal.egg-info/PKG-INFO +0 -403
  301. subliminal-2.0.5/subliminal.egg-info/SOURCES.txt +0 -45
  302. subliminal-2.0.5/subliminal.egg-info/requires.txt +0 -31
  303. {subliminal-2.0.5 → subliminal-2.2.0}/LICENSE +0 -0
  304. /subliminal-2.0.5/subliminal/converters/__init__.py → /subliminal-2.2.0/subliminal/py.typed +0 -0
  305. {subliminal-2.0.5 → subliminal-2.2.0}/subliminal.egg-info/dependency_links.txt +0 -0
  306. {subliminal-2.0.5 → subliminal-2.2.0}/subliminal.egg-info/top_level.txt +0 -0
@@ -0,0 +1,68 @@
1
+ # SCM
2
+ .git/
3
+
4
+ # Byte-compiled / optimized / DLL files
5
+ __pycache__/
6
+ *.py[cod]
7
+ *$py.class
8
+
9
+ # C extensions
10
+ *.so
11
+
12
+ # Distribution / packaging
13
+ .Python
14
+ env/
15
+ build/
16
+ develop-eggs/
17
+ dist/
18
+ downloads/
19
+ eggs/
20
+ .eggs/
21
+ lib/
22
+ lib64/
23
+ parts/
24
+ sdist/
25
+ var/
26
+ *.egg-info/
27
+ .installed.cfg
28
+ *.egg
29
+
30
+ # PyInstaller
31
+ # Usually these files are written by a python script from a template
32
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
33
+ *.manifest
34
+ *.spec
35
+
36
+ # Installer logs
37
+ pip-log.txt
38
+ pip-delete-this-directory.txt
39
+
40
+ # Unit test / coverage reports
41
+ htmlcov/
42
+ .tox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *,cover
49
+
50
+ # Translations
51
+ *.mo
52
+ *.pot
53
+
54
+ # Django stuff:
55
+ *.log
56
+
57
+ # Sphinx documentation
58
+ docs/_build/
59
+
60
+ # PyBuilder
61
+ target/
62
+
63
+ # Pycharm
64
+ .idea
65
+
66
+ # Subliminal
67
+ docs/
68
+ tests/
@@ -0,0 +1,33 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v4.5.0
4
+ hooks:
5
+ - id: check-toml
6
+ - id: check-yaml
7
+ exclude: ^tests/cassettes/
8
+ - id: end-of-file-fixer
9
+
10
+ - repo: https://github.com/crate-ci/typos
11
+ rev: v1.22.0
12
+ hooks:
13
+ - id: typos
14
+
15
+ - repo: https://github.com/astral-sh/ruff-pre-commit
16
+ rev: v0.4.7
17
+ hooks:
18
+ - id: ruff
19
+ args: [ --fix, --unsafe-fixes ]
20
+ - id: ruff-format
21
+
22
+ - repo: https://github.com/abravalheri/validate-pyproject
23
+ rev: v0.18
24
+ hooks:
25
+ - id: validate-pyproject
26
+ name: validate-pyproject
27
+
28
+ - repo: https://github.com/PyCQA/doc8
29
+ rev: v1.1.1
30
+ hooks:
31
+ - id: doc8
32
+ description: This hook runs doc8 for linting docs
33
+ require_serial: true
@@ -0,0 +1,19 @@
1
+ # Read the Docs configuration file for Sphinx projects
2
+ # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
3
+
4
+ version: 2
5
+
6
+ build:
7
+ os: ubuntu-22.04
8
+ tools:
9
+ python: "3.12"
10
+
11
+ python:
12
+ install:
13
+ - method: pip
14
+ path: .
15
+ extra_requirements:
16
+ - docs
17
+
18
+ sphinx:
19
+ configuration: docs/conf.py
@@ -0,0 +1,19 @@
1
+ Contributing
2
+ ============
3
+
4
+ Issues
5
+ ------
6
+ Issues are intended for bug report and feature requests. For any bug report please make sure to include the complete
7
+ stack trace and DEBUG level logs as well as reproduce steps.
8
+
9
+ If you use the CLI, you can create a debug log file with `subliminal --debug [...] 2> debug.log`.
10
+
11
+ Pull Requests
12
+ -------------
13
+ You can contribute code and documentation with pull requests. Any code contribution must be unit tested and the pull
14
+ request open against the *develop* branch.
15
+
16
+ Translations
17
+ ------------
18
+ Contribution to translations can be made on [subliminal's transifex page](https://www.transifex.com/subliminal/subliminal/)
19
+ Subliminal is configured to work with [transifex-client](http://docs.transifex.com/client/)
@@ -0,0 +1,33 @@
1
+ FROM python:3.12-alpine
2
+
3
+ MAINTAINER Antoine Bertin <diaoulael@gmail.com>
4
+
5
+ # set version label
6
+ ARG BUILD_WITH_UNRAR=false
7
+ ARG UNRAR_VERSION=6.2.6
8
+
9
+ RUN \
10
+ if [ "$BUILD_WITH_UNRAR" = true ]; then \
11
+ apk add -U --update --no-cache --virtual=build-dependencies build-base curl && \
12
+ echo "**** install unrar from source ****" && \
13
+ mkdir /tmp/unrar && \
14
+ curl -o /tmp/unrar.tar.gz -L "https://www.rarlab.com/rar/unrarsrc-${UNRAR_VERSION}.tar.gz" && \
15
+ tar xf /tmp/unrar.tar.gz -C /tmp/unrar --strip-components=1 && \
16
+ cd /tmp/unrar && \
17
+ make && \
18
+ install -v -m755 unrar /usr/local/bin && \
19
+ apk del build-dependencies curl && \
20
+ rm -rf /tmp/unrar /tmp/unrar.tar.gz; \
21
+ fi
22
+
23
+ RUN mkdir -p /usr/src/app /usr/src/cache
24
+
25
+ WORKDIR /usr/src/app
26
+ VOLUME /usr/src/cache
27
+
28
+ COPY . /usr/src/app
29
+ RUN python -m pip install .
30
+
31
+
32
+ ENTRYPOINT ["subliminal", "--cache-dir", "/usr/src/cache"]
33
+ CMD ["--help"]
@@ -1,6 +1,81 @@
1
1
  Changelog
2
2
  ---------
3
3
 
4
+ 2.2.0
5
+ ^^^^^
6
+ **release date:** 2024-06-24
7
+
8
+ * Drop python2 support, the supported versions are `>=3.8,<=3.12`.
9
+ * Load CLI options from a configuration file with the ``--config/-c`` option (`#1084 <https://github.com/Diaoul/subliminal/pull/1084>`_).
10
+ * Change default encoding of downloaded subtitles to 'utf-8' (not the original encoding). Use the ``--original-encoding`` cli option to recover the previous default behavior (`#1125 <https://github.com/Diaoul/subliminal/pull/1125>`_).
11
+ * Add opensubtitlescom provider
12
+ * Add gestdown provider
13
+ * Add tmdb refiner (requires a personal API key)
14
+ * Fix tvsubtitles provider
15
+ * Fix opensubtitles provider
16
+ * Fix napiprojekt provider
17
+ * Fix podnapisi provider to use JSON API
18
+ * Fix addic7ed provider
19
+ * Remove thesubdb provider
20
+ * Remove argenteam provider
21
+ * Remove shooter provider
22
+ * Remove legendastv provider
23
+ * Use `pyproject.toml` to specify the package configurations.* Add pre-commit hook (`#1115 <https://github.com/Diaoul/subliminal/pull/1115>`_).
24
+ * Use ruff to lint and format
25
+ * Use mypy to check types
26
+ * Add type annotations
27
+ * Drop dependencies: pysrt, appdirs, six, pytz
28
+ * Add dependencies:
29
+ - click-option-group>=0.5.6
30
+ - platformdirs>=4.2
31
+ - pysubs2>=1.7
32
+ - srt>=3.5
33
+ - tomli>=2
34
+ * Bump dependency versions:
35
+ - babelfish>=0.6.1
36
+ - chardet>=5.0
37
+ - click>=8.0
38
+ - dogpile.cache>=1.0
39
+ - enzyme>=0.5.0
40
+ - stevedore>=3.0
41
+
42
+ 2.1.0
43
+ ^^^^^
44
+ **release date:** 2020-05-02
45
+
46
+ * Improve legendastv provider matches
47
+ * Fix video extensions (.mk3d .ogm .ogv)
48
+ * Use new url to search for titles in legendastv provider
49
+ * Fix stevedore incompatibility
50
+ * Add support to webm video extension
51
+ * Make providers easier to be extended and customized
52
+ * Update podnapisi URL
53
+ * Add support to VIP/Donor accounts in legendastv provider
54
+ * Proper handling titles with year / country in legendastv provider
55
+ * Several minor enhancements in legendastv provider
56
+ * Add support for python 3.6, 3.7 and 3.8
57
+ * Drop support for python 3.3 and 3.4
58
+ * Do not discard providers bad zip/rar is downloaded
59
+ * SubsCenter provider removal
60
+ * Fix lxml parsing for Addic7ed provider
61
+ * Support titles with asterics in Addic7ed provider
62
+ * Add support to multi-episode search in Opensubtitles provider
63
+ * Fix multi-episode search in TVSubtitles provider
64
+ * Update to guessit 3
65
+ * Improve archive scanning
66
+ * Add Opensubtitles VIP provider
67
+ * Add country to Movie and Episode
68
+ * Add streaming_service to Video
69
+ * Add info property to Subtitle
70
+ * Do not search for subtitles if all required languages is already present
71
+ * Improve TVDB refiner to support series with comma
72
+ * Add alternative_titles to Video and enhance OMDB refiner to use alternative_titles
73
+ * Only compute video hashes when required
74
+ * Add apikey to OMDB refiner
75
+ * Fix Subtitle validation when unable to guess encoding
76
+ * Add support to rar in Dockerfile
77
+
78
+
4
79
  2.0.5
5
80
  ^^^^^
6
81
  **release date:** 2016-09-03
@@ -0,0 +1,13 @@
1
+ include LICENSE
2
+ include HISTORY.rst
3
+ include CONTRIBUTING.md
4
+ include Dockerfile
5
+ include .dockerignore
6
+ include .pre-commit-config.yaml
7
+ include .readthedocs.yaml
8
+ include tox.ini
9
+
10
+ graft docs
11
+ graft tests
12
+
13
+ prune */__pycache__