subliminal 2.1.0__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 (304) 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.1.0 → subliminal-2.2.0}/HISTORY.rst +38 -0
  7. subliminal-2.2.0/MANIFEST.in +13 -0
  8. subliminal-2.2.0/PKG-INFO +518 -0
  9. {subliminal-2.1.0 → subliminal-2.2.0}/README.rst +1 -1
  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.1.0 → subliminal-2.2.0}/subliminal/core.py +226 -108
  44. {subliminal-2.1.0 → subliminal-2.2.0}/subliminal/exceptions.py +15 -1
  45. subliminal-2.2.0/subliminal/extensions.py +155 -0
  46. {subliminal-2.1.0 → subliminal-2.2.0}/subliminal/matches.py +82 -42
  47. {subliminal-2.1.0 → subliminal-2.2.0}/subliminal/providers/__init__.py +107 -31
  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.1.0 → 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.1.0 → subliminal-2.2.0}/subliminal.egg-info/entry_points.txt +6 -6
  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.1.0/MANIFEST.in +0 -1
  268. subliminal-2.1.0/PKG-INFO +0 -445
  269. subliminal-2.1.0/requirements.txt +0 -1
  270. subliminal-2.1.0/setup.cfg +0 -15
  271. subliminal-2.1.0/setup.py +0 -104
  272. subliminal-2.1.0/subliminal/__init__.py +0 -21
  273. subliminal-2.1.0/subliminal/cache.py +0 -37
  274. subliminal-2.1.0/subliminal/cli.py +0 -498
  275. subliminal-2.1.0/subliminal/converters/addic7ed.py +0 -32
  276. subliminal-2.1.0/subliminal/converters/legendastv.py +0 -27
  277. subliminal-2.1.0/subliminal/converters/shooter.py +0 -23
  278. subliminal-2.1.0/subliminal/converters/thesubdb.py +0 -26
  279. subliminal-2.1.0/subliminal/converters/tvsubtitles.py +0 -25
  280. subliminal-2.1.0/subliminal/extensions.py +0 -114
  281. subliminal-2.1.0/subliminal/providers/addic7ed.py +0 -313
  282. subliminal-2.1.0/subliminal/providers/argenteam.py +0 -135
  283. subliminal-2.1.0/subliminal/providers/legendastv.py +0 -514
  284. subliminal-2.1.0/subliminal/providers/napiprojekt.py +0 -111
  285. subliminal-2.1.0/subliminal/providers/opensubtitles.py +0 -294
  286. subliminal-2.1.0/subliminal/providers/podnapisi.py +0 -178
  287. subliminal-2.1.0/subliminal/providers/shooter.py +0 -86
  288. subliminal-2.1.0/subliminal/providers/thesubdb.py +0 -92
  289. subliminal-2.1.0/subliminal/providers/tvsubtitles.py +0 -216
  290. subliminal-2.1.0/subliminal/refiners/hash.py +0 -44
  291. subliminal-2.1.0/subliminal/refiners/metadata.py +0 -99
  292. subliminal-2.1.0/subliminal/refiners/omdb.py +0 -193
  293. subliminal-2.1.0/subliminal/refiners/tvdb.py +0 -372
  294. subliminal-2.1.0/subliminal/score.py +0 -258
  295. subliminal-2.1.0/subliminal/subtitle.py +0 -214
  296. subliminal-2.1.0/subliminal/utils.py +0 -208
  297. subliminal-2.1.0/subliminal/video.py +0 -266
  298. subliminal-2.1.0/subliminal.egg-info/PKG-INFO +0 -445
  299. subliminal-2.1.0/subliminal.egg-info/SOURCES.txt +0 -45
  300. subliminal-2.1.0/subliminal.egg-info/requires.txt +0 -31
  301. {subliminal-2.1.0 → subliminal-2.2.0}/LICENSE +0 -0
  302. /subliminal-2.1.0/subliminal/converters/__init__.py → /subliminal-2.2.0/subliminal/py.typed +0 -0
  303. {subliminal-2.1.0 → subliminal-2.2.0}/subliminal.egg-info/dependency_links.txt +0 -0
  304. {subliminal-2.1.0 → 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,44 @@
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
+
4
42
  2.1.0
5
43
  ^^^^^
6
44
  **release date:** 2020-05-02
@@ -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__