mkv-episode-matcher 0.4.0__tar.gz → 0.4.5__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.

Files changed (53) hide show
  1. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/.coverage +0 -0
  2. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/.github/workflows/python-publish.yml +2 -2
  3. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/PKG-INFO +5 -6
  4. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/README.md +4 -5
  5. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/docs/installation.md +8 -5
  6. mkv_episode_matcher-0.4.5/mkv_episode_matcher/__init__.py +9 -0
  7. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/__main__.py +30 -45
  8. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/episode_matcher.py +3 -3
  9. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/utils.py +4 -3
  10. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher.egg-info/PKG-INFO +5 -6
  11. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/setup.cfg +1 -1
  12. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/uv.lock +30 -1
  13. mkv_episode_matcher-0.4.0/mkv_episode_matcher/__init__.py +0 -1
  14. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/.gitattributes +0 -0
  15. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/.github/funding.yml +0 -0
  16. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/.github/workflows/documentation.yml +0 -0
  17. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/.github/workflows/tests.yml +0 -0
  18. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/.gitignore +0 -0
  19. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/.gitmodules +0 -0
  20. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/.python-version +0 -0
  21. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/.vscode/settings.json +0 -0
  22. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/docs/api/index.md +0 -0
  23. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/docs/cli.md +0 -0
  24. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/docs/configuration.md +0 -0
  25. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/docs/quickstart.md +0 -0
  26. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/docs/tips.md +0 -0
  27. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkdocs.yml +0 -0
  28. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/.gitattributes +0 -0
  29. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/config.py +0 -0
  30. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/episode_identification.py +0 -0
  31. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/libraries/pgs2srt/.gitignore +0 -0
  32. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/libraries/pgs2srt/Libraries/SubZero/SubZero.py +0 -0
  33. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/libraries/pgs2srt/Libraries/SubZero/dictionaries/data.py +0 -0
  34. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/libraries/pgs2srt/Libraries/SubZero/post_processing.py +0 -0
  35. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/libraries/pgs2srt/README.md +0 -0
  36. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/libraries/pgs2srt/__init__.py +0 -0
  37. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/libraries/pgs2srt/imagemaker.py +0 -0
  38. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/libraries/pgs2srt/pgs2srt.py +0 -0
  39. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/libraries/pgs2srt/pgsreader.py +0 -0
  40. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/libraries/pgs2srt/requirements.txt +0 -0
  41. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/mkv_to_srt.py +0 -0
  42. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/speech_to_text.py +0 -0
  43. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/subtitle_utils.py +0 -0
  44. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher/tmdb_client.py +0 -0
  45. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher.egg-info/SOURCES.txt +0 -0
  46. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher.egg-info/dependency_links.txt +0 -0
  47. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher.egg-info/entry_points.txt +0 -0
  48. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher.egg-info/requires.txt +0 -0
  49. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/mkv_episode_matcher.egg-info/top_level.txt +0 -0
  50. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/pyproject.toml +0 -0
  51. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/setup.py +0 -0
  52. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/tests/__init__.py +0 -0
  53. {mkv_episode_matcher-0.4.0 → mkv_episode_matcher-0.4.5}/tests/test_main.py +0 -0
@@ -22,7 +22,7 @@ jobs:
22
22
  - name: Build a binary wheel and a source tarball
23
23
  run: python3 -m build
24
24
  - name: Store the distribution packages
25
- uses: actions/upload-artifact@v3
25
+ uses: actions/upload-artifact@v4
26
26
  with:
27
27
  name: python-package-distributions
28
28
  path: dist/
@@ -42,7 +42,7 @@ jobs:
42
42
 
43
43
  steps:
44
44
  - name: Download all the dists
45
- uses: actions/download-artifact@v3
45
+ uses: actions/download-artifact@v4
46
46
  with:
47
47
  name: python-package-distributions
48
48
  path: dist/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: mkv-episode-matcher
3
- Version: 0.4.0
3
+ Version: 0.4.5
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
@@ -67,7 +67,7 @@ Automatically match and rename your MKV TV episodes using The Movie Database (TM
67
67
  - Python 3.9 or higher
68
68
  - [FFmpeg](https://ffmpeg.org/download.html) installed and available in system PATH
69
69
  - [Tesseract OCR](https://github.com/UB-Mannheim/tesseract/wiki) installed (required for image-based subtitle processing)
70
- - TMDb API key
70
+ - TMDb API key (optional, for subtitle downloads)
71
71
  - OpenSubtitles account (optional, for subtitle downloads)
72
72
 
73
73
  ## Quick Start
@@ -83,10 +83,6 @@ pip install mkv-episode-matcher
83
83
  mkv-match --show-dir "path/to/your/show"
84
84
  ```
85
85
 
86
- ## Documentation
87
-
88
- Full documentation is available at [https://jsakkos.github.io/mkv-episode-matcher/](https://jsakkos.github.io/mkv-episode-matcher/)
89
-
90
86
  ## Directory Structure
91
87
 
92
88
  MKV Episode Matcher expects your TV shows to be organized as follows:
@@ -136,3 +132,6 @@ Distributed under the MIT License. See `LICENSE` for more information.
136
132
  - [OpenSubtitles](https://www.opensubtitles.com/) for subtitle integration
137
133
  - All contributors who have helped improve this project
138
134
 
135
+ ## Documentation
136
+
137
+ Full documentation is available at [https://jsakkos.github.io/mkv-episode-matcher/](https://jsakkos.github.io/mkv-episode-matcher/)
@@ -27,7 +27,7 @@ Automatically match and rename your MKV TV episodes using The Movie Database (TM
27
27
  - Python 3.9 or higher
28
28
  - [FFmpeg](https://ffmpeg.org/download.html) installed and available in system PATH
29
29
  - [Tesseract OCR](https://github.com/UB-Mannheim/tesseract/wiki) installed (required for image-based subtitle processing)
30
- - TMDb API key
30
+ - TMDb API key (optional, for subtitle downloads)
31
31
  - OpenSubtitles account (optional, for subtitle downloads)
32
32
 
33
33
  ## Quick Start
@@ -43,10 +43,6 @@ pip install mkv-episode-matcher
43
43
  mkv-match --show-dir "path/to/your/show"
44
44
  ```
45
45
 
46
- ## Documentation
47
-
48
- Full documentation is available at [https://jsakkos.github.io/mkv-episode-matcher/](https://jsakkos.github.io/mkv-episode-matcher/)
49
-
50
46
  ## Directory Structure
51
47
 
52
48
  MKV Episode Matcher expects your TV shows to be organized as follows:
@@ -96,3 +92,6 @@ Distributed under the MIT License. See `LICENSE` for more information.
96
92
  - [OpenSubtitles](https://www.opensubtitles.com/) for subtitle integration
97
93
  - All contributors who have helped improve this project
98
94
 
95
+ ## Documentation
96
+
97
+ Full documentation is available at [https://jsakkos.github.io/mkv-episode-matcher/](https://jsakkos.github.io/mkv-episode-matcher/)
@@ -35,9 +35,12 @@ For GPU acceleration (recommended if you have a CUDA-capable GPU):
35
35
  ```bash
36
36
  pip install "mkv-episode-matcher"
37
37
  ```
38
- Find the appropriate CUDA version and upgrade Torch (e.g., for CUDA 12.4):
38
+ Find the appropriate CUDA version and upgrade Torch (e.g., for CUDA 12.4) from the [compatibility matrix](https://pytorch.org/get-started/locally/):
39
39
  ```bash
40
40
  pip install -U torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
41
+
42
+ # Verify GPU availability
43
+ mkv-match --check-gpu true
41
44
  ```
42
45
 
43
46
 
@@ -54,13 +57,12 @@ cd mkv-episode-matcher
54
57
  pip install uv
55
58
 
56
59
  # Install with development dependencies
57
- uv venv
58
- uv pip install -e ".[dev]"
60
+ uv sync --dev
59
61
  ```
60
62
 
61
63
  ## API Keys Setup
62
64
 
63
- 1. **TMDb API Key**
65
+ 1. **TMDb API Key (Optional)**
64
66
  - Create an account at [TMDb](https://www.themoviedb.org/)
65
67
  - Go to your account settings
66
68
  - Request an API key
@@ -87,12 +89,13 @@ Verify your installation:
87
89
  mkv-match --version
88
90
 
89
91
  # Check GPU availability (if installed with GPU support)
90
- python -c "import torch; print(f'GPU available: {torch.cuda.is_available()}')"
92
+ mkv-match --check-gpu true
91
93
  ```
92
94
 
93
95
  ## Troubleshooting
94
96
 
95
97
  If you encounter any issues:
98
+
96
99
  1. Ensure you have the latest pip: `pip install --upgrade pip`
97
100
  2. For GPU installations, verify CUDA is properly installed
98
101
  3. Check the [compatibility matrix](https://pytorch.org/get-started/locally/) for PyTorch and CUDA versions
@@ -0,0 +1,9 @@
1
+ """MKV Episode Matcher package."""
2
+ from importlib.metadata import version, PackageNotFoundError
3
+
4
+ try:
5
+ __version__ = version("mkv-episode-matcher")
6
+ except PackageNotFoundError:
7
+ # package is not installed
8
+ __version__ = "unknown"
9
+
@@ -1,9 +1,10 @@
1
1
  # __main__.py
2
2
  import argparse
3
3
  import os
4
+ import sys
4
5
 
5
6
  from loguru import logger
6
-
7
+ from mkv_episode_matcher import __version__
7
8
  from mkv_episode_matcher.config import get_config, set_config
8
9
 
9
10
  # Log the start of the application
@@ -62,6 +63,12 @@ def main():
62
63
 
63
64
  # Parse command-line arguments
64
65
  parser = argparse.ArgumentParser(description="Process shows with TMDb API")
66
+ parser.add_argument(
67
+ "--version",
68
+ action="version",
69
+ version=f"%(prog)s {__version__}",
70
+ help="Show the version number and exit"
71
+ )
65
72
  parser.add_argument("--tmdb-api-key", help="TMDb API key")
66
73
  parser.add_argument("--show-dir", help="Main directory of the show")
67
74
  parser.add_argument(
@@ -105,71 +112,49 @@ def main():
105
112
  check_gpu_support()
106
113
  return
107
114
  logger.debug(f"Command-line arguments: {args}")
108
- open_subtitles_api_key = ""
109
- open_subtitles_user_agent = ""
110
- open_subtitles_username = ""
111
- open_subtitles_password = ""
112
- # Check if API key is provided via command-line argument
113
- tmdb_api_key = args.tmdb_api_key
114
-
115
- # If API key is not provided, try to get it from the cache
116
- if not tmdb_api_key:
117
- cached_config = get_config(CONFIG_FILE)
118
- if cached_config:
119
- tmdb_api_key = cached_config.get("tmdb_api_key")
120
115
 
121
- # If API key is still not available, prompt the user to input it
116
+ # Load configuration once
117
+ config = get_config(CONFIG_FILE)
118
+
119
+ # Get TMDb API key
120
+ tmdb_api_key = args.tmdb_api_key or config.get("tmdb_api_key")
122
121
  if not tmdb_api_key:
123
122
  tmdb_api_key = input("Enter your TMDb API key: ")
124
- # Cache the API key
125
-
126
123
  logger.debug(f"TMDb API Key: {tmdb_api_key}")
124
+
127
125
  logger.debug("Getting OpenSubtitles API key")
128
- cached_config = get_config(CONFIG_FILE)
129
- try:
130
- open_subtitles_api_key = cached_config.get("open_subtitles_api_key")
131
- open_subtitles_user_agent = cached_config.get("open_subtitles_user_agent")
132
- open_subtitles_username = cached_config.get("open_subtitles_username")
133
- open_subtitles_password = cached_config.get("open_subtitles_password")
134
- except:
135
- pass
126
+ open_subtitles_api_key = config.get("open_subtitles_api_key")
127
+ open_subtitles_user_agent = config.get("open_subtitles_user_agent")
128
+ open_subtitles_username = config.get("open_subtitles_username")
129
+ open_subtitles_password = config.get("open_subtitles_password")
130
+
136
131
  if args.get_subs:
137
132
  if not open_subtitles_api_key:
138
133
  open_subtitles_api_key = input("Enter your OpenSubtitles API key: ")
139
-
140
134
  if not open_subtitles_user_agent:
141
135
  open_subtitles_user_agent = input("Enter your OpenSubtitles User Agent: ")
142
-
143
136
  if not open_subtitles_username:
144
137
  open_subtitles_username = input("Enter your OpenSubtitles Username: ")
145
-
146
138
  if not open_subtitles_password:
147
139
  open_subtitles_password = input("Enter your OpenSubtitles Password: ")
148
-
149
- # If show directory is provided via command-line argument, use it
150
- show_dir = args.show_dir
140
+
141
+ # Use config for show directory and tesseract path
142
+ show_dir = args.show_dir or config.get("show_dir")
143
+ if not show_dir:
144
+ show_dir = input("Enter the main directory of the show:")
145
+ logger.info(f"Show Directory: {show_dir}")
151
146
  if not show_dir:
152
- show_dir = cached_config.get("show_dir")
153
- if not show_dir:
154
- # If show directory is not provided, prompt the user to input it
155
- show_dir = input("Enter the main directory of the show:")
156
- logger.info(f"Show Directory: {show_dir}")
157
- # if the user does not provide a show directory, make the default show directory the current working directory
158
- if not show_dir:
159
- show_dir = os.getcwd()
147
+ show_dir = os.getcwd()
148
+
160
149
  if not args.tesseract_path:
161
- tesseract_path = cached_config.get("tesseract_path")
162
-
150
+ tesseract_path = config.get("tesseract_path")
163
151
  if not tesseract_path:
164
- tesseract_path = input(
165
- r"Enter the path to the tesseract executable: ['C:\Program Files\Tesseract-OCR\tesseract.exe']"
166
- )
167
-
152
+ tesseract_path = input(r"Enter the path to the tesseract executable: ['C:\Program Files\Tesseract-OCR\tesseract.exe']")
168
153
  else:
169
154
  tesseract_path = args.tesseract_path
170
155
  logger.debug(f"Teesseract Path: {tesseract_path}")
171
156
  logger.debug(f"Show Directory: {show_dir}")
172
-
157
+
173
158
  # Set the configuration
174
159
  set_config(
175
160
  tmdb_api_key,
@@ -32,7 +32,7 @@ def process_show(season=None, dry_run=False, get_subs=False):
32
32
  # Early check for reference files
33
33
  reference_dir = Path(CACHE_DIR) / "data" / show_name
34
34
  reference_files = list(reference_dir.glob("*.srt"))
35
- if not reference_files:
35
+ if (not get_subs) and (not reference_files):
36
36
  logger.error(f"No reference subtitle files found in {reference_dir}")
37
37
  logger.info("Please download reference subtitles first")
38
38
  return
@@ -67,7 +67,7 @@ def process_show(season=None, dry_run=False, get_subs=False):
67
67
  if get_subs:
68
68
  show_id = fetch_show_id(matcher.show_name)
69
69
  if show_id:
70
- get_subtitles(show_id, seasons={season_num})
70
+ get_subtitles(show_id, seasons={season_num}, config=config)
71
71
 
72
72
  unmatched_files = []
73
73
  for mkv_file in mkv_files:
@@ -105,4 +105,4 @@ def process_show(season=None, dry_run=False, get_subs=False):
105
105
  finally:
106
106
  if not dry_run:
107
107
  shutil.rmtree(temp_dir)
108
- cleanup_ocr_files(show_dir)
108
+ cleanup_ocr_files(show_dir)
@@ -121,16 +121,17 @@ def rename_episode_file(original_file_path, new_filename):
121
121
  logger.error(f"Failed to rename file: {e}")
122
122
  return None
123
123
 
124
- def get_subtitles(show_id, seasons: set[int]):
124
+ def get_subtitles(show_id, seasons: set[int], config=None):
125
125
  """
126
126
  Retrieves and saves subtitles for a given TV show and seasons.
127
127
 
128
128
  Args:
129
129
  show_id (int): The ID of the TV show.
130
130
  seasons (Set[int]): A set of season numbers for which subtitles should be retrieved.
131
+ config (Config object, optional): Preloaded configuration.
131
132
  """
132
- logger.info(f"Getting subtitles for show ID {show_id}")
133
- config = get_config(CONFIG_FILE)
133
+ if config is None:
134
+ config = get_config(CONFIG_FILE)
134
135
  show_dir = config.get("show_dir")
135
136
  series_name = sanitize_filename(os.path.basename(show_dir))
136
137
  tmdb_api_key = config.get("tmdb_api_key")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: mkv-episode-matcher
3
- Version: 0.4.0
3
+ Version: 0.4.5
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
@@ -67,7 +67,7 @@ Automatically match and rename your MKV TV episodes using The Movie Database (TM
67
67
  - Python 3.9 or higher
68
68
  - [FFmpeg](https://ffmpeg.org/download.html) installed and available in system PATH
69
69
  - [Tesseract OCR](https://github.com/UB-Mannheim/tesseract/wiki) installed (required for image-based subtitle processing)
70
- - TMDb API key
70
+ - TMDb API key (optional, for subtitle downloads)
71
71
  - OpenSubtitles account (optional, for subtitle downloads)
72
72
 
73
73
  ## Quick Start
@@ -83,10 +83,6 @@ pip install mkv-episode-matcher
83
83
  mkv-match --show-dir "path/to/your/show"
84
84
  ```
85
85
 
86
- ## Documentation
87
-
88
- Full documentation is available at [https://jsakkos.github.io/mkv-episode-matcher/](https://jsakkos.github.io/mkv-episode-matcher/)
89
-
90
86
  ## Directory Structure
91
87
 
92
88
  MKV Episode Matcher expects your TV shows to be organized as follows:
@@ -136,3 +132,6 @@ Distributed under the MIT License. See `LICENSE` for more information.
136
132
  - [OpenSubtitles](https://www.opensubtitles.com/) for subtitle integration
137
133
  - All contributors who have helped improve this project
138
134
 
135
+ ## Documentation
136
+
137
+ Full documentation is available at [https://jsakkos.github.io/mkv-episode-matcher/](https://jsakkos.github.io/mkv-episode-matcher/)
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = mkv_episode_matcher
3
- version = 0.4.0
3
+ version = 0.4.5
4
4
  author = Jonathan Sakkos
5
5
  author_email = jonathansakkos@gmail.com
6
6
  description = The MKV Episode Matcher is a tool for identifying TV series episodes from MKV files and renaming the files accordingly.
@@ -2,19 +2,49 @@ version = 1
2
2
  requires-python = ">=3.9"
3
3
  resolution-markers = [
4
4
  "(python_full_version >= '3.12' and platform_machine != 'aarch64' and extra != 'extra-19-mkv-episode-matcher-cpu' and extra == 'extra-19-mkv-episode-matcher-cu124') or (python_full_version >= '3.12' and sys_platform != 'linux' and extra != 'extra-19-mkv-episode-matcher-cpu' and extra == 'extra-19-mkv-episode-matcher-cu124')",
5
+ "python_version < '0'",
6
+ "python_version < '0'",
5
7
  "(python_full_version >= '3.10' and python_full_version < '3.12' and platform_machine != 'aarch64' and extra != 'extra-19-mkv-episode-matcher-cpu' and extra == 'extra-19-mkv-episode-matcher-cu124') or (python_full_version >= '3.10' and python_full_version < '3.12' and sys_platform != 'linux' and extra != 'extra-19-mkv-episode-matcher-cpu' and extra == 'extra-19-mkv-episode-matcher-cu124')",
8
+ "python_version < '0'",
9
+ "python_version < '0'",
6
10
  "(python_full_version < '3.10' and platform_machine != 'aarch64' and extra != 'extra-19-mkv-episode-matcher-cpu' and extra == 'extra-19-mkv-episode-matcher-cu124') or (python_full_version < '3.10' and sys_platform != 'linux' and extra != 'extra-19-mkv-episode-matcher-cpu' and extra == 'extra-19-mkv-episode-matcher-cu124')",
11
+ "python_version < '0'",
12
+ "python_version < '0'",
7
13
  "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux' and extra != 'extra-19-mkv-episode-matcher-cpu' and extra == 'extra-19-mkv-episode-matcher-cu124'",
14
+ "python_version < '0'",
15
+ "python_version < '0'",
8
16
  "python_full_version >= '3.10' and python_full_version < '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux' and extra != 'extra-19-mkv-episode-matcher-cpu' and extra == 'extra-19-mkv-episode-matcher-cu124'",
17
+ "python_version < '0'",
18
+ "python_version < '0'",
9
19
  "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux' and extra != 'extra-19-mkv-episode-matcher-cpu' and extra == 'extra-19-mkv-episode-matcher-cu124'",
20
+ "python_version < '0'",
21
+ "python_version < '0'",
22
+ "python_version < '0'",
10
23
  "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux' and extra == 'extra-19-mkv-episode-matcher-cpu' and extra != 'extra-19-mkv-episode-matcher-cu124') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux' and extra == 'extra-19-mkv-episode-matcher-cpu' and extra != 'extra-19-mkv-episode-matcher-cu124')",
24
+ "python_version < '0'",
25
+ "python_version < '0'",
11
26
  "(python_full_version >= '3.10' and python_full_version < '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux' and extra == 'extra-19-mkv-episode-matcher-cpu' and extra != 'extra-19-mkv-episode-matcher-cu124') or (python_full_version >= '3.10' and python_full_version < '3.12' and sys_platform != 'darwin' and sys_platform != 'linux' and extra == 'extra-19-mkv-episode-matcher-cpu' and extra != 'extra-19-mkv-episode-matcher-cu124')",
27
+ "python_version < '0'",
28
+ "python_version < '0'",
12
29
  "(python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux' and extra == 'extra-19-mkv-episode-matcher-cpu' and extra != 'extra-19-mkv-episode-matcher-cu124') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux' and extra == 'extra-19-mkv-episode-matcher-cpu' and extra != 'extra-19-mkv-episode-matcher-cu124')",
30
+ "python_version < '0'",
31
+ "python_version < '0'",
13
32
  "(python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux' and extra == 'extra-19-mkv-episode-matcher-cpu' and extra != 'extra-19-mkv-episode-matcher-cu124') or (python_full_version >= '3.12' and sys_platform == 'darwin' and extra == 'extra-19-mkv-episode-matcher-cpu' and extra != 'extra-19-mkv-episode-matcher-cu124')",
33
+ "python_version < '0'",
34
+ "python_version < '0'",
14
35
  "(python_full_version >= '3.10' and python_full_version < '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux' and extra == 'extra-19-mkv-episode-matcher-cpu' and extra != 'extra-19-mkv-episode-matcher-cu124') or (python_full_version >= '3.10' and python_full_version < '3.12' and sys_platform == 'darwin' and extra == 'extra-19-mkv-episode-matcher-cpu' and extra != 'extra-19-mkv-episode-matcher-cu124')",
36
+ "python_version < '0'",
37
+ "python_version < '0'",
15
38
  "(python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux' and extra == 'extra-19-mkv-episode-matcher-cpu' and extra != 'extra-19-mkv-episode-matcher-cu124') or (python_full_version < '3.10' and sys_platform == 'darwin' and extra == 'extra-19-mkv-episode-matcher-cpu' and extra != 'extra-19-mkv-episode-matcher-cu124')",
39
+ "python_version < '0'",
40
+ "python_version < '0'",
41
+ "python_version < '0'",
16
42
  "python_full_version >= '3.12' and extra != 'extra-19-mkv-episode-matcher-cpu' and extra != 'extra-19-mkv-episode-matcher-cu124'",
43
+ "python_version < '0'",
44
+ "python_version < '0'",
17
45
  "python_full_version >= '3.10' and python_full_version < '3.12' and extra != 'extra-19-mkv-episode-matcher-cpu' and extra != 'extra-19-mkv-episode-matcher-cu124'",
46
+ "python_version < '0'",
47
+ "python_version < '0'",
18
48
  "python_full_version < '3.10' and extra != 'extra-19-mkv-episode-matcher-cpu' and extra != 'extra-19-mkv-episode-matcher-cu124'",
19
49
  ]
20
50
  conflicts = [[
@@ -436,7 +466,6 @@ wheels = [
436
466
 
437
467
  [[package]]
438
468
  name = "mkv-episode-matcher"
439
- version = "0.3.6.post1.dev2+ged28bc0.d20250122"
440
469
  source = { editable = "." }
441
470
  dependencies = [
442
471
  { name = "configparser" },