mkv-episode-matcher 0.1.10__tar.gz → 0.1.12__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.
Potentially problematic release.
This version of mkv-episode-matcher might be problematic. Click here for more details.
- mkv_episode_matcher-0.1.12/.python-version +1 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/PKG-INFO +10 -13
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher/__main__.py +9 -10
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher/episode_matcher.py +36 -12
- mkv_episode_matcher-0.1.12/mkv_episode_matcher/notebooks/whisper.ipynb +122 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher.egg-info/PKG-INFO +10 -13
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher.egg-info/SOURCES.txt +6 -1
- mkv_episode_matcher-0.1.12/mkv_episode_matcher.egg-info/requires.txt +8 -0
- mkv_episode_matcher-0.1.12/old_pyproject.toml +68 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/pyproject.toml +10 -16
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/setup.cfg +1 -1
- mkv_episode_matcher-0.1.12/tests/__init__.py +0 -0
- mkv_episode_matcher-0.1.12/uv.lock +395 -0
- mkv_episode_matcher-0.1.10/mkv_episode_matcher.egg-info/requires.txt +0 -7
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/.gitattributes +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/.github/funding.yml +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/.github/workflows/python-publish.yml +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/.gitignore +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/.gitmodules +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/.readthedocs.yml +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/.vscode/settings.json +0 -0
- /mkv_episode_matcher-0.1.10/docs/_build/html/_static/scripts/furo-extensions.js → /mkv_episode_matcher-0.1.12/README.md +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/README.rst +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/dist/mkv_episode_matcher-0.1.1-py3-none-any.whl +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/dist/mkv_episode_matcher-0.1.1.tar.gz +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/dist/mkv_episode_matcher-0.1.2-py3-none-any.whl +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/dist/mkv_episode_matcher-0.1.2.tar.gz +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/dist/mkv_episode_matcher-0.1.3-py3-none-any.whl +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/dist/mkv_episode_matcher-0.1.3.tar.gz +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/dist/mkv_episode_matcher-0.1.4-py3-none-any.whl +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/dist/mkv_episode_matcher-0.1.4.tar.gz +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/dist/mkv_episode_matcher-0.1.5-py3-none-any.whl +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/dist/mkv_episode_matcher-0.1.5.tar.gz +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/Makefile +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/doctrees/environment.pickle +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/doctrees/index.doctree +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/.buildinfo +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/.doctrees/api.doctree +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/.doctrees/environment.pickle +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/.doctrees/generated/mkv_episode_matcher.doctree +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/.doctrees/index.doctree +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/.doctrees/mkv_episode_matcher.doctree +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/.doctrees/readme.doctree +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_sources/api.rst.txt +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_sources/generated/mkv_episode_matcher.rst.txt +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_sources/index.rst.txt +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_sources/mkv_episode_matcher.rst.txt +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_sources/readme.rst.txt +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/alabaster.css +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/basic.css +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/css/badge_only.css +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/css/fonts/lato-bold.woff +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/css/fonts/lato-bold.woff2 +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/css/fonts/lato-normal.woff +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/css/fonts/lato-normal.woff2 +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/css/theme.css +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/custom.css +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/debug.css +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/doctools.js +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/documentation_options.js +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/file.png +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/jquery.js +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/js/badge_only.js +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/js/html5shiv-printshiv.min.js +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/js/html5shiv.min.js +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/js/theme.js +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/language_data.js +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/minus.png +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/plus.png +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/pygments.css +0 -0
- /mkv_episode_matcher-0.1.10/mkv_episode_matcher/libraries/pgs2srt/__init__.py → /mkv_episode_matcher-0.1.12/docs/_build/html/_static/scripts/furo-extensions.js +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/scripts/furo.js +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/scripts/furo.js.LICENSE.txt +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/scripts/furo.js.map +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/searchtools.js +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/skeleton.css +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/sphinx_highlight.js +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/styles/furo-extensions.css +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/styles/furo-extensions.css.map +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/styles/furo.css +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/_static/styles/furo.css.map +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/api.html +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/generated/mkv_episode_matcher.html +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/genindex.html +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/index.html +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/mkv_episode_matcher.html +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/objects.inv +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/py-modindex.html +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/readme.html +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/search.html +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/_build/html/searchindex.js +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/api.rst +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/conf.py +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/generated/mkv_episode_matcher.rst +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/index.rst +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/make.bat +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/mkv_episode_matcher.rst +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/readme.rst +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/docs/requirements.txt +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher/.gitattributes +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher/__init__.py +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher/config.py +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher/libraries/pgs2srt/.gitignore +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher/libraries/pgs2srt/Libraries/SubZero/SubZero.py +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher/libraries/pgs2srt/Libraries/SubZero/dictionaries/data.py +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher/libraries/pgs2srt/Libraries/SubZero/post_processing.py +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher/libraries/pgs2srt/README.md +0 -0
- {mkv_episode_matcher-0.1.10/tests → mkv_episode_matcher-0.1.12/mkv_episode_matcher/libraries/pgs2srt}/__init__.py +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher/libraries/pgs2srt/imagemaker.py +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher/libraries/pgs2srt/pgs2srt.py +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher/libraries/pgs2srt/pgsreader.py +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher/libraries/pgs2srt/requirements.txt +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher/mkv_to_srt.py +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher/notebooks/get_subtitles_test.ipynb +0 -0
- /mkv_episode_matcher-0.1.10/mkv_episode_matcher/requirements.txt → /mkv_episode_matcher-0.1.12/mkv_episode_matcher/old_requirements.txt +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher/tmdb_client.py +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher/utils.py +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher.egg-info/dependency_links.txt +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher.egg-info/entry_points.txt +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher.egg-info/top_level.txt +0 -0
- {mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/setup.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.12
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mkv-episode-matcher
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.12
|
|
4
4
|
Summary: The MKV Episode Matcher is a tool for identifying TV series episodes from MKV files and renaming the files accordingly.
|
|
5
5
|
Home-page: https://github.com/Jsakkos/mkv-episode-matcher
|
|
6
6
|
Author: Jonathan Sakkos
|
|
@@ -11,22 +11,19 @@ Project-URL: Issues, https://github.com/Jsakkos/mkv-episode-matcher/issues
|
|
|
11
11
|
Project-URL: Source, https://github.com/Jsakkos/mkv-episode-matcher
|
|
12
12
|
Classifier: Development Status :: 4 - Beta
|
|
13
13
|
Classifier: Programming Language :: Python
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
18
14
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
15
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
20
16
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
21
|
-
Requires-Python: >=3.
|
|
17
|
+
Requires-Python: >=3.12
|
|
22
18
|
Description-Content-Type: text/x-rst
|
|
23
|
-
Requires-Dist:
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist:
|
|
26
|
-
Requires-Dist:
|
|
27
|
-
Requires-Dist:
|
|
28
|
-
Requires-Dist: pytesseract
|
|
29
|
-
Requires-Dist:
|
|
19
|
+
Requires-Dist: configparser>=7.1.0
|
|
20
|
+
Requires-Dist: ffmpeg>=1.4
|
|
21
|
+
Requires-Dist: loguru>=0.7.2
|
|
22
|
+
Requires-Dist: numpy>=2.1.3
|
|
23
|
+
Requires-Dist: opensubtitlescom>=0.1.5
|
|
24
|
+
Requires-Dist: pytesseract>=0.3.13
|
|
25
|
+
Requires-Dist: requests>=2.32.3
|
|
26
|
+
Requires-Dist: tmdb-client>=0.0.1
|
|
30
27
|
|
|
31
28
|
===================
|
|
32
29
|
MKV Episode Matcher
|
|
@@ -109,17 +109,16 @@ def main():
|
|
|
109
109
|
# Cache the API key
|
|
110
110
|
|
|
111
111
|
logger.debug(f"TMDb API Key: {tmdb_api_key}")
|
|
112
|
+
logger.debug("Getting OpenSubtitles API key")
|
|
113
|
+
cached_config = get_config(CONFIG_FILE)
|
|
114
|
+
try:
|
|
115
|
+
open_subtitles_api_key = cached_config.get("open_subtitles_api_key")
|
|
116
|
+
open_subtitles_user_agent = cached_config.get("open_subtitles_user_agent")
|
|
117
|
+
open_subtitles_username = cached_config.get("open_subtitles_username")
|
|
118
|
+
open_subtitles_password = cached_config.get("open_subtitles_password")
|
|
119
|
+
except:
|
|
120
|
+
pass
|
|
112
121
|
if args.get_subs:
|
|
113
|
-
logger.debug("Getting OpenSubtitles API key")
|
|
114
|
-
cached_config = get_config(CONFIG_FILE)
|
|
115
|
-
try:
|
|
116
|
-
open_subtitles_api_key = cached_config.get("open_subtitles_api_key")
|
|
117
|
-
open_subtitles_user_agent = cached_config.get("open_subtitles_user_agent")
|
|
118
|
-
open_subtitles_username = cached_config.get("open_subtitles_username")
|
|
119
|
-
open_subtitles_password = cached_config.get("open_subtitles_password")
|
|
120
|
-
except:
|
|
121
|
-
pass
|
|
122
|
-
|
|
123
122
|
if not open_subtitles_api_key:
|
|
124
123
|
open_subtitles_api_key = input("Enter your OpenSubtitles API key: ")
|
|
125
124
|
|
{mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher/episode_matcher.py
RENAMED
|
@@ -16,46 +16,70 @@ from mkv_episode_matcher.utils import check_filename, cleanup_ocr_files, get_sub
|
|
|
16
16
|
def process_show(season=None, dry_run=False, get_subs=False):
|
|
17
17
|
"""
|
|
18
18
|
Process the show by downloading episode images and finding matching episodes.
|
|
19
|
-
|
|
20
19
|
Args:
|
|
21
20
|
season (int, optional): The season number to process. If provided, only that season will be processed. Defaults to None.
|
|
22
|
-
force (bool, optional): Whether to force re-processing of episodes even if they already exist. Defaults to False.
|
|
23
21
|
dry_run (bool, optional): Whether to perform a dry run without actually processing the episodes. Defaults to False.
|
|
24
|
-
|
|
22
|
+
get_subs (bool, optional): Whether to download subtitles for the episodes. Defaults to False.
|
|
25
23
|
"""
|
|
26
24
|
config = get_config(CONFIG_FILE)
|
|
27
25
|
show_dir = config.get("show_dir")
|
|
28
26
|
show_name = os.path.basename(show_dir)
|
|
29
27
|
logger.info(f"Processing show '{show_name}'...")
|
|
28
|
+
|
|
30
29
|
show_id = fetch_show_id(show_name)
|
|
31
|
-
|
|
32
30
|
if show_id is None:
|
|
33
31
|
logger.error(f"Could not find show '{os.path.basename(show_dir)}' on TMDb.")
|
|
34
32
|
return
|
|
33
|
+
|
|
34
|
+
# Get all season directories
|
|
35
35
|
season_paths = [
|
|
36
36
|
os.path.join(show_dir, d)
|
|
37
37
|
for d in os.listdir(show_dir)
|
|
38
38
|
if os.path.isdir(os.path.join(show_dir, d))
|
|
39
39
|
]
|
|
40
|
+
|
|
41
|
+
# Filter seasons to only include those with .mkv files
|
|
42
|
+
valid_season_paths = []
|
|
43
|
+
for season_path in season_paths:
|
|
44
|
+
mkv_files = [
|
|
45
|
+
f for f in os.listdir(season_path)
|
|
46
|
+
if f.endswith(".mkv")
|
|
47
|
+
]
|
|
48
|
+
if mkv_files:
|
|
49
|
+
valid_season_paths.append(season_path)
|
|
50
|
+
|
|
51
|
+
if not valid_season_paths:
|
|
52
|
+
logger.warning(f"No seasons with .mkv files found in show '{show_name}'")
|
|
53
|
+
return
|
|
54
|
+
|
|
40
55
|
logger.info(
|
|
41
|
-
f"Found {len(
|
|
56
|
+
f"Found {len(valid_season_paths)} seasons with .mkv files for show '{show_name}'"
|
|
42
57
|
)
|
|
58
|
+
|
|
59
|
+
# Extract season numbers from valid paths
|
|
43
60
|
seasons_to_process = [
|
|
44
|
-
int(os.path.basename(season_path).split()[-1])
|
|
61
|
+
int(os.path.basename(season_path).split()[-1])
|
|
62
|
+
for season_path in valid_season_paths
|
|
45
63
|
]
|
|
64
|
+
|
|
46
65
|
if get_subs:
|
|
47
66
|
get_subtitles(show_id, seasons=set(seasons_to_process))
|
|
67
|
+
|
|
48
68
|
if season is not None:
|
|
69
|
+
# If specific season requested, check if it has .mkv files
|
|
70
|
+
season_path = os.path.join(show_dir, f"Season {season}")
|
|
71
|
+
if season_path not in valid_season_paths:
|
|
72
|
+
logger.warning(f"Season {season} has no .mkv files to process")
|
|
73
|
+
return
|
|
74
|
+
|
|
49
75
|
mkv_files = [
|
|
50
|
-
os.path.join(
|
|
51
|
-
for f in os.listdir(
|
|
76
|
+
os.path.join(season_path, f)
|
|
77
|
+
for f in os.listdir(season_path)
|
|
52
78
|
if f.endswith(".mkv")
|
|
53
79
|
]
|
|
54
|
-
|
|
55
|
-
season_path = os.path.join(show_dir, f"Season {season}")
|
|
56
80
|
else:
|
|
57
|
-
|
|
58
|
-
|
|
81
|
+
# Process all valid seasons
|
|
82
|
+
for season_path in valid_season_paths:
|
|
59
83
|
mkv_files = [
|
|
60
84
|
os.path.join(season_path, f)
|
|
61
85
|
for f in os.listdir(season_path)
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "code",
|
|
5
|
+
"execution_count": 1,
|
|
6
|
+
"metadata": {},
|
|
7
|
+
"outputs": [
|
|
8
|
+
{
|
|
9
|
+
"ename": "OSError",
|
|
10
|
+
"evalue": "[WinError 126] The specified module could not be found. Error loading \"c:\\Users\\Jonathan\\anaconda3\\envs\\whisper\\Lib\\site-packages\\torch\\lib\\fbgemm.dll\" or one of its dependencies.",
|
|
11
|
+
"output_type": "error",
|
|
12
|
+
"traceback": [
|
|
13
|
+
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
|
14
|
+
"\u001b[1;31mOSError\u001b[0m Traceback (most recent call last)",
|
|
15
|
+
"Cell \u001b[1;32mIn[1], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mwhisper\u001b[39;00m\n\u001b[0;32m 2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mos\u001b[39;00m\n",
|
|
16
|
+
"File \u001b[1;32mc:\\Users\\Jonathan\\anaconda3\\envs\\whisper\\Lib\\site-packages\\whisper\\__init__.py:8\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mwarnings\u001b[39;00m\n\u001b[0;32m 6\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtyping\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m List, Optional, Union\n\u001b[1;32m----> 8\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mtorch\u001b[39;00m\n\u001b[0;32m 9\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtqdm\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m tqdm\n\u001b[0;32m 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01maudio\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m load_audio, log_mel_spectrogram, pad_or_trim\n",
|
|
17
|
+
"File \u001b[1;32mc:\\Users\\Jonathan\\anaconda3\\envs\\whisper\\Lib\\site-packages\\torch\\__init__.py:148\u001b[0m\n\u001b[0;32m 146\u001b[0m err \u001b[38;5;241m=\u001b[39m ctypes\u001b[38;5;241m.\u001b[39mWinError(ctypes\u001b[38;5;241m.\u001b[39mget_last_error())\n\u001b[0;32m 147\u001b[0m err\u001b[38;5;241m.\u001b[39mstrerror \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m Error loading \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mdll\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m or one of its dependencies.\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m--> 148\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m err\n\u001b[0;32m 150\u001b[0m kernel32\u001b[38;5;241m.\u001b[39mSetErrorMode(prev_error_mode)\n\u001b[0;32m 153\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_preload_cuda_deps\u001b[39m(lib_folder, lib_name):\n",
|
|
18
|
+
"\u001b[1;31mOSError\u001b[0m: [WinError 126] The specified module could not be found. Error loading \"c:\\Users\\Jonathan\\anaconda3\\envs\\whisper\\Lib\\site-packages\\torch\\lib\\fbgemm.dll\" or one of its dependencies."
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"source": [
|
|
23
|
+
"import whisper\n",
|
|
24
|
+
"import os\n",
|
|
25
|
+
"\n"
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"cell_type": "code",
|
|
30
|
+
"execution_count": null,
|
|
31
|
+
"metadata": {},
|
|
32
|
+
"outputs": [
|
|
33
|
+
{
|
|
34
|
+
"ename": "",
|
|
35
|
+
"evalue": "",
|
|
36
|
+
"output_type": "error",
|
|
37
|
+
"traceback": [
|
|
38
|
+
"\u001b[1;31mRunning cells with 'MKV-GPU (Python 3.8.10)' requires the ipykernel package.\n",
|
|
39
|
+
"\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n",
|
|
40
|
+
"\u001b[1;31mCommand: 'conda install -n MKV-GPU ipykernel --update-deps --force-reinstall'"
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"source": [
|
|
45
|
+
"import torch\n",
|
|
46
|
+
"\n",
|
|
47
|
+
"if torch.cuda.is_available():\n",
|
|
48
|
+
" print(f\"CUDA is available. Using GPU: {torch.cuda.get_device_name(0)}\")\n",
|
|
49
|
+
"else:\n",
|
|
50
|
+
" print(\"CUDA is not available. Using CPU.\")\n",
|
|
51
|
+
"\n",
|
|
52
|
+
"# It will print out the GPU that you are using."
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"cell_type": "code",
|
|
57
|
+
"execution_count": null,
|
|
58
|
+
"metadata": {},
|
|
59
|
+
"outputs": [
|
|
60
|
+
{
|
|
61
|
+
"ename": "",
|
|
62
|
+
"evalue": "",
|
|
63
|
+
"output_type": "error",
|
|
64
|
+
"traceback": [
|
|
65
|
+
"\u001b[1;31mRunning cells with 'MKV-GPU (Python 3.8.10)' requires the ipykernel package.\n",
|
|
66
|
+
"\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n",
|
|
67
|
+
"\u001b[1;31mCommand: 'conda install -n MKV-GPU ipykernel --update-deps --force-reinstall'"
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
"source": [
|
|
72
|
+
"model = whisper.load_model(\"base\") # Replace \"base\" with the desired model size\n",
|
|
73
|
+
"result = model.transcribe(r\"C:\\Users\\Jonathan\\output_audio.wav\")\n",
|
|
74
|
+
"\n",
|
|
75
|
+
"# Print or save the transcription\n",
|
|
76
|
+
"print(result[\"text\"])"
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"cell_type": "code",
|
|
81
|
+
"execution_count": null,
|
|
82
|
+
"metadata": {},
|
|
83
|
+
"outputs": [
|
|
84
|
+
{
|
|
85
|
+
"ename": "",
|
|
86
|
+
"evalue": "",
|
|
87
|
+
"output_type": "error",
|
|
88
|
+
"traceback": [
|
|
89
|
+
"\u001b[1;31mRunning cells with 'MKV-GPU (Python 3.8.10)' requires the ipykernel package.\n",
|
|
90
|
+
"\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n",
|
|
91
|
+
"\u001b[1;31mCommand: 'conda install -n MKV-GPU ipykernel --update-deps --force-reinstall'"
|
|
92
|
+
]
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"source": [
|
|
96
|
+
"# ffmpeg -i \"E:\\Video\\Seinfeld\\Season 5\\Seinfeld - Season 5 (Disc 1)-A1_t02.mkv\" -t 300 -map 0:a:0 -acodec pcm_s16le -ac 1 output_audio.wav\n",
|
|
97
|
+
"# works for make a .wav file of the first 5 mins"
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
],
|
|
101
|
+
"metadata": {
|
|
102
|
+
"kernelspec": {
|
|
103
|
+
"display_name": "mkv",
|
|
104
|
+
"language": "python",
|
|
105
|
+
"name": "python3"
|
|
106
|
+
},
|
|
107
|
+
"language_info": {
|
|
108
|
+
"codemirror_mode": {
|
|
109
|
+
"name": "ipython",
|
|
110
|
+
"version": 3
|
|
111
|
+
},
|
|
112
|
+
"file_extension": ".py",
|
|
113
|
+
"mimetype": "text/x-python",
|
|
114
|
+
"name": "python",
|
|
115
|
+
"nbconvert_exporter": "python",
|
|
116
|
+
"pygments_lexer": "ipython3",
|
|
117
|
+
"version": "3.11.9"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"nbformat": 4,
|
|
121
|
+
"nbformat_minor": 2
|
|
122
|
+
}
|
{mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mkv-episode-matcher
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.12
|
|
4
4
|
Summary: The MKV Episode Matcher is a tool for identifying TV series episodes from MKV files and renaming the files accordingly.
|
|
5
5
|
Home-page: https://github.com/Jsakkos/mkv-episode-matcher
|
|
6
6
|
Author: Jonathan Sakkos
|
|
@@ -11,22 +11,19 @@ Project-URL: Issues, https://github.com/Jsakkos/mkv-episode-matcher/issues
|
|
|
11
11
|
Project-URL: Source, https://github.com/Jsakkos/mkv-episode-matcher
|
|
12
12
|
Classifier: Development Status :: 4 - Beta
|
|
13
13
|
Classifier: Programming Language :: Python
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
18
14
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
15
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
20
16
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
21
|
-
Requires-Python: >=3.
|
|
17
|
+
Requires-Python: >=3.12
|
|
22
18
|
Description-Content-Type: text/x-rst
|
|
23
|
-
Requires-Dist:
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist:
|
|
26
|
-
Requires-Dist:
|
|
27
|
-
Requires-Dist:
|
|
28
|
-
Requires-Dist: pytesseract
|
|
29
|
-
Requires-Dist:
|
|
19
|
+
Requires-Dist: configparser>=7.1.0
|
|
20
|
+
Requires-Dist: ffmpeg>=1.4
|
|
21
|
+
Requires-Dist: loguru>=0.7.2
|
|
22
|
+
Requires-Dist: numpy>=2.1.3
|
|
23
|
+
Requires-Dist: opensubtitlescom>=0.1.5
|
|
24
|
+
Requires-Dist: pytesseract>=0.3.13
|
|
25
|
+
Requires-Dist: requests>=2.32.3
|
|
26
|
+
Requires-Dist: tmdb-client>=0.0.1
|
|
30
27
|
|
|
31
28
|
===================
|
|
32
29
|
MKV Episode Matcher
|
{mkv_episode_matcher-0.1.10 → mkv_episode_matcher-0.1.12}/mkv_episode_matcher.egg-info/SOURCES.txt
RENAMED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
.gitattributes
|
|
2
2
|
.gitignore
|
|
3
3
|
.gitmodules
|
|
4
|
+
.python-version
|
|
4
5
|
.readthedocs.yml
|
|
6
|
+
README.md
|
|
5
7
|
README.rst
|
|
8
|
+
old_pyproject.toml
|
|
6
9
|
pyproject.toml
|
|
7
10
|
setup.cfg
|
|
8
11
|
setup.py
|
|
12
|
+
uv.lock
|
|
9
13
|
.github/funding.yml
|
|
10
14
|
.github/workflows/python-publish.yml
|
|
11
15
|
.vscode/settings.json
|
|
@@ -105,7 +109,7 @@ mkv_episode_matcher/__main__.py
|
|
|
105
109
|
mkv_episode_matcher/config.py
|
|
106
110
|
mkv_episode_matcher/episode_matcher.py
|
|
107
111
|
mkv_episode_matcher/mkv_to_srt.py
|
|
108
|
-
mkv_episode_matcher/
|
|
112
|
+
mkv_episode_matcher/old_requirements.txt
|
|
109
113
|
mkv_episode_matcher/tmdb_client.py
|
|
110
114
|
mkv_episode_matcher/utils.py
|
|
111
115
|
mkv_episode_matcher.egg-info/PKG-INFO
|
|
@@ -125,4 +129,5 @@ mkv_episode_matcher/libraries/pgs2srt/Libraries/SubZero/SubZero.py
|
|
|
125
129
|
mkv_episode_matcher/libraries/pgs2srt/Libraries/SubZero/post_processing.py
|
|
126
130
|
mkv_episode_matcher/libraries/pgs2srt/Libraries/SubZero/dictionaries/data.py
|
|
127
131
|
mkv_episode_matcher/notebooks/get_subtitles_test.ipynb
|
|
132
|
+
mkv_episode_matcher/notebooks/whisper.ipynb
|
|
128
133
|
tests/__init__.py
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0", "wheel", "setuptools_scm[toml]>=6.2"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[tool.setuptools_scm]
|
|
6
|
+
# See configuration details in https://github.com/pypa/setuptools_scm
|
|
7
|
+
|
|
8
|
+
[project]
|
|
9
|
+
name = "mkv-episode-matcher"
|
|
10
|
+
description = "The MKV Episode Matcher is a tool for identifying TV series episodes from MKV files and renaming the files accordingly."
|
|
11
|
+
dynamic = ["version"]
|
|
12
|
+
readme = "README.rst"
|
|
13
|
+
requires-python = ">=3.8"
|
|
14
|
+
license = { text = "MIT" }
|
|
15
|
+
keywords = []
|
|
16
|
+
authors = [
|
|
17
|
+
{ name = "Jsakkos", email = "jonathansakkos@protonmail.com" },
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
dependencies = [
|
|
21
|
+
"requests",
|
|
22
|
+
"loguru",
|
|
23
|
+
"pillow",
|
|
24
|
+
"configparser",
|
|
25
|
+
"tmdb_client",
|
|
26
|
+
"pytesseract",
|
|
27
|
+
"opensubtitlescom",
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
[project.urls]
|
|
31
|
+
Documentation = "https://github.com/Jsakkos/mkv-episode-matcher#readme"
|
|
32
|
+
Issues = "https://github.com/Jsakkos/mkv-episode-matcher/issues"
|
|
33
|
+
Source = "https://github.com/Jsakkos/mkv-episode-matcher"
|
|
34
|
+
|
|
35
|
+
[project.scripts]
|
|
36
|
+
mkv-match = "mkv_episode_matcher.__main__:main"
|
|
37
|
+
|
|
38
|
+
[tool.ruff.format]
|
|
39
|
+
preview = true
|
|
40
|
+
quote-style = "single"
|
|
41
|
+
|
|
42
|
+
[tool.ruff.lint]
|
|
43
|
+
preview = true
|
|
44
|
+
extend-select = ["C901"]
|
|
45
|
+
|
|
46
|
+
[tool.ruff.lint.extend-per-file-ignores]
|
|
47
|
+
"docs/.hooks/*" = ["INP001", "T201"]
|
|
48
|
+
|
|
49
|
+
[tool.ruff.lint.isort]
|
|
50
|
+
known-first-party = ["foo", "bar"]
|
|
51
|
+
|
|
52
|
+
[tool.coverage.run]
|
|
53
|
+
source_pkgs = ["mkv_episode_matcher", "tests"]
|
|
54
|
+
branch = true
|
|
55
|
+
parallel = true
|
|
56
|
+
omit = [
|
|
57
|
+
"mkv-episode-matcher/mkv_episode_matcher/__init__.py",
|
|
58
|
+
]
|
|
59
|
+
|
|
60
|
+
[tool.coverage.paths]
|
|
61
|
+
tests = ["tests", "*/mkv_episode_matcher/tests"]
|
|
62
|
+
|
|
63
|
+
[tool.coverage.report]
|
|
64
|
+
exclude_lines = [
|
|
65
|
+
"no cov",
|
|
66
|
+
"if __name__ == .__main__.:",
|
|
67
|
+
"if TYPE_CHECKING:",
|
|
68
|
+
]
|
|
@@ -10,32 +10,27 @@ name = "mkv-episode-matcher"
|
|
|
10
10
|
description = "The MKV Episode Matcher is a tool for identifying TV series episodes from MKV files and renaming the files accordingly."
|
|
11
11
|
dynamic = ["version"]
|
|
12
12
|
readme = "README.rst"
|
|
13
|
-
requires-python = ">=3.8"
|
|
14
|
-
license = { text = "MIT" }
|
|
15
|
-
keywords = []
|
|
16
13
|
authors = [
|
|
17
14
|
{ name = "Jsakkos", email = "jonathansakkos@protonmail.com" },
|
|
18
15
|
]
|
|
16
|
+
requires-python = ">=3.12"
|
|
17
|
+
license = { text = "MIT" }
|
|
19
18
|
classifiers = [
|
|
20
19
|
"Development Status :: 4 - Beta",
|
|
21
20
|
"Programming Language :: Python",
|
|
22
|
-
"Programming Language :: Python :: 3.8",
|
|
23
|
-
"Programming Language :: Python :: 3.9",
|
|
24
|
-
"Programming Language :: Python :: 3.10",
|
|
25
|
-
"Programming Language :: Python :: 3.11",
|
|
26
21
|
"Programming Language :: Python :: 3.12",
|
|
27
22
|
"Programming Language :: Python :: Implementation :: CPython",
|
|
28
23
|
"Programming Language :: Python :: Implementation :: PyPy",
|
|
29
24
|
]
|
|
30
|
-
|
|
31
25
|
dependencies = [
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
26
|
+
"configparser>=7.1.0",
|
|
27
|
+
"ffmpeg>=1.4",
|
|
28
|
+
"loguru>=0.7.2",
|
|
29
|
+
"numpy>=2.1.3",
|
|
30
|
+
"opensubtitlescom>=0.1.5",
|
|
31
|
+
"pytesseract>=0.3.13",
|
|
32
|
+
"requests>=2.32.3",
|
|
33
|
+
"tmdb-client>=0.0.1",
|
|
39
34
|
]
|
|
40
35
|
|
|
41
36
|
[project.urls]
|
|
@@ -69,7 +64,6 @@ omit = [
|
|
|
69
64
|
]
|
|
70
65
|
|
|
71
66
|
[tool.coverage.paths]
|
|
72
|
-
calcy = ["mkv-episode-matcher/mkv_episode_matcher", "*/mkv-episode-matcher/mkv_episode_matcher"]
|
|
73
67
|
tests = ["tests", "*/mkv_episode_matcher/tests"]
|
|
74
68
|
|
|
75
69
|
[tool.coverage.report]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[metadata]
|
|
2
2
|
name = mkv_episode_matcher
|
|
3
|
-
version = 0.1.
|
|
3
|
+
version = 0.1.12
|
|
4
4
|
author = Jonathan Sakkos
|
|
5
5
|
author_email = jonathansakkos@protonmail.com
|
|
6
6
|
description = The MKV Episode Matcher is a tool for identifying TV series episodes from MKV files and renaming the files accordingly.
|
|
File without changes
|