mkv-episode-matcher 0.6.0__tar.gz → 0.7.1__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 (46) hide show
  1. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/.coverage +0 -0
  2. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/.github/workflows/tests.yml +8 -10
  3. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/CHANGELOG.md +17 -1
  4. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/PKG-INFO +7 -4
  5. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/README.md +3 -1
  6. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/docs/api/index.md +9 -5
  7. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/docs/cli.md +6 -4
  8. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/docs/installation.md +2 -2
  9. mkv_episode_matcher-0.7.1/docs/quickstart.md +88 -0
  10. mkv_episode_matcher-0.7.1/docs/tips.md +97 -0
  11. mkv_episode_matcher-0.7.1/mkv_episode_matcher/__main__.py +326 -0
  12. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/mkv_episode_matcher/episode_identification.py +3 -2
  13. mkv_episode_matcher-0.7.1/mkv_episode_matcher/episode_matcher.py +152 -0
  14. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/mkv_episode_matcher/utils.py +19 -2
  15. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/mkv_episode_matcher.egg-info/PKG-INFO +7 -4
  16. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/mkv_episode_matcher.egg-info/requires.txt +1 -0
  17. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/pyproject.toml +5 -1
  18. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/setup.cfg +1 -1
  19. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/uv.lock +845 -181
  20. mkv_episode_matcher-0.6.0/docs/quickstart.md +0 -76
  21. mkv_episode_matcher-0.6.0/docs/tips.md +0 -163
  22. mkv_episode_matcher-0.6.0/mkv_episode_matcher/__main__.py +0 -165
  23. mkv_episode_matcher-0.6.0/mkv_episode_matcher/episode_matcher.py +0 -85
  24. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/.gitattributes +0 -0
  25. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/.github/funding.yml +0 -0
  26. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/.github/workflows/documentation.yml +0 -0
  27. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/.github/workflows/python-publish.yml +0 -0
  28. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/.gitignore +0 -0
  29. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/.gitmodules +0 -0
  30. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/.python-version +0 -0
  31. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/.vscode/settings.json +0 -0
  32. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/docs/changelog.md +0 -0
  33. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/docs/configuration.md +0 -0
  34. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/mkdocs.yml +0 -0
  35. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/mkv_episode_matcher/.gitattributes +0 -0
  36. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/mkv_episode_matcher/__init__.py +0 -0
  37. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/mkv_episode_matcher/config.py +0 -0
  38. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/mkv_episode_matcher/subtitle_utils.py +0 -0
  39. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/mkv_episode_matcher/tmdb_client.py +0 -0
  40. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/mkv_episode_matcher.egg-info/SOURCES.txt +0 -0
  41. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/mkv_episode_matcher.egg-info/dependency_links.txt +0 -0
  42. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/mkv_episode_matcher.egg-info/entry_points.txt +0 -0
  43. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/mkv_episode_matcher.egg-info/top_level.txt +0 -0
  44. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/setup.py +0 -0
  45. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/tests/__init__.py +0 -0
  46. {mkv_episode_matcher-0.6.0 → mkv_episode_matcher-0.7.1}/tests/test_main.py +0 -0
@@ -11,24 +11,22 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  matrix:
14
- python-version:
15
- - "3.9"
16
- - "3.10"
17
- - "3.11"
18
- - "3.12"
14
+ os: [ubuntu-latest, windows-latest, macos-latest]
15
+ python-version: ["3.9", "3.10", "3.11", "3.12"]
16
+ fail-fast: false
19
17
 
20
18
  steps:
21
19
  - uses: actions/checkout@v4
22
20
 
23
21
  - name: Install uv and set the python version
24
- uses: astral-sh/setup-uv@v4
22
+ uses: astral-sh/setup-uv@v5
25
23
  with:
24
+ enable-cache: true
25
+ cache-dependency-glob: "uv.lock"
26
26
  python-version: ${{ matrix.python-version }}
27
27
 
28
- - name: Install dependencies
29
- run: |
30
- uv venv
31
- uv pip install -e .
28
+ - name: Install the project
29
+ run: uv sync --all-extras --dev
32
30
 
33
31
  - name: Run tests with pytest and coverage
34
32
  run: |
@@ -5,7 +5,22 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [0.6.0] - 2025-02-24
8
+ ## [0.7.0] - 2025-03-05
9
+
10
+ ### Added
11
+ - Rich UI with color-coded output and progress indicators
12
+ - Interactive season selection interface
13
+ - Visual confirmation panels for operations
14
+ - GPU support check command
15
+ - Masked API key display for improved security
16
+ - Verbose output option for detailed logging
17
+
18
+ ### Changed
19
+ - Enhanced CLI interface with better visual feedback
20
+ - Improved error messages with color coding
21
+ - Updated documentation to reflect new UI features
22
+
23
+ ## [0.6.0] - 2025-03-02
9
24
 
10
25
  ### Added
11
26
  - Comprehensive documentation including installation, configuration, and CLI guides
@@ -31,5 +46,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
31
46
  ### Removed
32
47
  - Removed unused code
33
48
 
49
+ [0.7.0]: https://github.com/Jsakkos/mkv-episode-matcher/releases/tag/v0.7.0
34
50
  [0.6.0]: https://github.com/Jsakkos/mkv-episode-matcher/releases/tag/v0.6.0
35
51
  [0.5.0]: https://github.com/Jsakkos/mkv-episode-matcher/releases/tag/v0.5.0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: mkv-episode-matcher
3
- Version: 0.6.0
3
+ Version: 0.7.1
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
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python
14
14
  Classifier: Programming Language :: Python :: 3.12
15
15
  Classifier: Programming Language :: Python :: Implementation :: CPython
16
16
  Classifier: Programming Language :: Python :: Implementation :: PyPy
17
- Requires-Python: >=3.9
17
+ Requires-Python: <3.13,>=3.9
18
18
  Description-Content-Type: text/markdown
19
19
  Requires-Dist: configparser>=7.1.0
20
20
  Requires-Dist: ffmpeg>=1.4
@@ -23,6 +23,7 @@ Requires-Dist: openai-whisper>=20240930
23
23
  Requires-Dist: opensubtitlescom>=0.1.5
24
24
  Requires-Dist: rapidfuzz>=3.10.1
25
25
  Requires-Dist: requests>=2.32.3
26
+ Requires-Dist: rich[jupyter]>=13.9.4
26
27
  Requires-Dist: tmdb-client>=0.0.1
27
28
  Requires-Dist: torch>=2.5.1
28
29
  Requires-Dist: torchaudio>=2.5.1
@@ -46,16 +47,18 @@ Automatically match and rename your MKV TV episodes using The Movie Database (TM
46
47
  ## Features
47
48
 
48
49
  - 🎯 **Automatic Episode Matching**: Uses TMDb to accurately identify episodes
50
+ - 🎨 **Rich User Interface**: Color-coded output and progress indicators
49
51
  - 📝 **Subtitle Extraction**: Extracts subtitles from MKV files
50
52
  - 🔊 **Speech Recognition**: Uses Whisper for accurate episode identification
51
53
  - 🚀 **Multi-threaded**: Fast processing of multiple files
52
54
  - ⬇️ **Subtitle Downloads**: Integration with OpenSubtitles
53
55
  - ✨ **Bulk Processing**: Handle entire seasons at once
54
56
  - 🧪 **Dry Run Mode**: Test changes before applying
57
+ - 🎮 **Interactive Mode**: User-friendly season selection and configuration
55
58
 
56
59
  ## Prerequisites
57
60
 
58
- - Python 3.9 or higher
61
+ - Python 3.9-3.12
59
62
  - [FFmpeg](https://ffmpeg.org/download.html) installed and available in system PATH
60
63
  - TMDb API key (optional, for subtitle downloads)
61
64
  - OpenSubtitles account (optional, for subtitle downloads)
@@ -15,16 +15,18 @@ Automatically match and rename your MKV TV episodes using The Movie Database (TM
15
15
  ## Features
16
16
 
17
17
  - 🎯 **Automatic Episode Matching**: Uses TMDb to accurately identify episodes
18
+ - 🎨 **Rich User Interface**: Color-coded output and progress indicators
18
19
  - 📝 **Subtitle Extraction**: Extracts subtitles from MKV files
19
20
  - 🔊 **Speech Recognition**: Uses Whisper for accurate episode identification
20
21
  - 🚀 **Multi-threaded**: Fast processing of multiple files
21
22
  - ⬇️ **Subtitle Downloads**: Integration with OpenSubtitles
22
23
  - ✨ **Bulk Processing**: Handle entire seasons at once
23
24
  - 🧪 **Dry Run Mode**: Test changes before applying
25
+ - 🎮 **Interactive Mode**: User-friendly season selection and configuration
24
26
 
25
27
  ## Prerequisites
26
28
 
27
- - Python 3.9 or higher
29
+ - Python 3.9-3.12
28
30
  - [FFmpeg](https://ffmpeg.org/download.html) installed and available in system PATH
29
31
  - TMDb API key (optional, for subtitle downloads)
30
32
  - OpenSubtitles account (optional, for subtitle downloads)
@@ -4,25 +4,29 @@ This section contains the automatically generated API documentation for MKV Epis
4
4
 
5
5
  ## Core Modules
6
6
 
7
+ ::: mkv_episode_matcher.__main__
8
+ options:
9
+ show_root_heading: true
10
+ heading_level: 2
11
+
7
12
  ::: mkv_episode_matcher.episode_matcher
8
13
  options:
9
14
  show_root_heading: true
10
15
  heading_level: 2
11
16
 
12
- ## TMDB Client
13
-
14
- ::: mkv_episode_matcher.tmdb_client
17
+ ::: mkv_episode_matcher.episode_identification
15
18
  options:
16
19
  show_root_heading: true
17
20
  heading_level: 2
18
21
 
19
- ## MKV Converter
22
+ ## TMDB Client
20
23
 
21
- ::: mkv_episode_matcher.mkv_to_srt
24
+ ::: mkv_episode_matcher.tmdb_client
22
25
  options:
23
26
  show_root_heading: true
24
27
  heading_level: 2
25
28
 
29
+
26
30
  ## Utilities
27
31
 
28
32
  ::: mkv_episode_matcher.utils
@@ -1,5 +1,7 @@
1
1
  # Command Line Interface
2
2
 
3
+ The CLI features a rich, user-friendly interface with color-coded output and progress indicators.
4
+
3
5
  ## Basic Commands
4
6
 
5
7
  ### Process Show
@@ -29,13 +31,13 @@ mkv-match --show-dir "/path/to/show" --season 1
29
31
  ### Dry Run Mode
30
32
 
31
33
  ```bash
32
- mkv-match --show-dir "/path/to/show" --dry-run true
34
+ mkv-match --show-dir "/path/to/show" --dry-run
33
35
  ```
34
36
 
35
37
  ### Download Subtitles
36
38
 
37
39
  ```bash
38
- mkv-match --show-dir "/path/to/show" --get-subs true
40
+ mkv-match --show-dir "/path/to/show" --get-subs
39
41
  ```
40
42
 
41
43
  ### Set API Key
@@ -50,8 +52,8 @@ mkv-match --show-dir "/path/to/show" --tmdb-api-key "your_key"
50
52
  mkv-match \
51
53
  --show-dir "/path/to/show" \
52
54
  --season 1 \
53
- --get-subs true \
54
- --dry-run true
55
+ --get-subs \
56
+ --dry-run
55
57
  ```
56
58
 
57
59
  ## Logging
@@ -34,7 +34,7 @@ Find the appropriate CUDA version and upgrade Torch (e.g., for CUDA 12.4) from t
34
34
  pip install -U torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
35
35
 
36
36
  # Verify GPU availability
37
- mkv-match --check-gpu true
37
+ mkv-match --check-gpu
38
38
  ```
39
39
 
40
40
  ### Development Installation
@@ -83,7 +83,7 @@ Verify your installation:
83
83
  mkv-match --version
84
84
 
85
85
  # Check GPU availability (if installed with GPU support)
86
- mkv-match --check-gpu true
86
+ mkv-match --check-gpu
87
87
  ```
88
88
 
89
89
  ## Troubleshooting
@@ -0,0 +1,88 @@
1
+ # Quick Start Guide
2
+
3
+ Get started with MKV Episode Matcher quickly and efficiently.
4
+
5
+ ## Basic Usage
6
+
7
+ ### 1. Interactive Mode
8
+
9
+ Simply run:
10
+ ```bash
11
+ mkv-match
12
+ ```
13
+ The program will guide you through the setup interactively.
14
+
15
+ ### 2. Command Line Options
16
+
17
+ Process a specific season:
18
+ ```bash
19
+ mkv-match --show-dir "/path/to/show" --season 1
20
+ ```
21
+
22
+ Process all seasons with subtitles:
23
+ ```bash
24
+ mkv-match --show-dir "/path/to/show" --get-subs
25
+ ```
26
+
27
+ Test run with detailed output:
28
+ ```bash
29
+ mkv-match --show-dir "/path/to/show" --dry-run --verbose
30
+ ```
31
+
32
+ ## Key Features
33
+
34
+ - Interactive setup
35
+ - Progress bars with ETA
36
+ - Detailed matching information
37
+ - Confidence-based matching
38
+ - Automatic subtitle downloads
39
+ - GPU acceleration support
40
+
41
+ ## Directory Structure
42
+
43
+ Expected TV show organization:
44
+ ```
45
+ Show Name/
46
+ ├── Season 1/
47
+ │ ├── episode1.mkv
48
+ │ ├── episode2.mkv
49
+ ├── Season 2/
50
+ │ ├── episode1.mkv
51
+ │ └── episode2.mkv
52
+ ```
53
+
54
+ ## Configuration
55
+
56
+ Configuration is stored at `~/.mkv-episode-matcher/config.ini`:
57
+ ```ini
58
+ [Config]
59
+ tmdb_api_key = your_tmdb_api_key
60
+ show_dir = /path/to/show
61
+ open_subtitles_api_key = your_opensubs_key
62
+ open_subtitles_user_agent = your_user_agent
63
+ open_subtitles_username = your_username
64
+ open_subtitles_password = your_password
65
+ ```
66
+
67
+ ## Common Commands
68
+
69
+ ### Check GPU Support
70
+ ```bash
71
+ mkv-match --check-gpu true
72
+ ```
73
+
74
+ ### Set Confidence Level
75
+ ```bash
76
+ mkv-match --show-dir "/path/to/show" --confidence 0.8
77
+ ```
78
+
79
+ ### Enable Verbose Output
80
+ ```bash
81
+ mkv-match --show-dir "/path/to/show" --verbose true
82
+ ```
83
+
84
+ ## Next Steps
85
+
86
+ - Read [Installation Guide](installation.md) for setup details
87
+ - Check [Tips and Tricks](tips.md) for advanced usage
88
+ - See [API Reference](api/index.md) for development
@@ -0,0 +1,97 @@
1
+ # Tips and Tricks
2
+
3
+ ## Best Practices
4
+
5
+ ### Directory Organization
6
+
7
+ Organize your files consistently:
8
+ ```
9
+ TV Shows/
10
+ ├── Show Name/
11
+ │ ├── Season 1/
12
+ │ │ ├── episode1.mkv
13
+ │ │ └── episode2.mkv
14
+ │ └── Season 2/
15
+ │ ├── episode1.mkv
16
+ │ └── episode2.mkv
17
+ ```
18
+
19
+ ### Performance & Accuracy
20
+
21
+ 1. **Confidence Threshold**
22
+ ```bash
23
+ # Increase matching accuracy (default: 0.7)
24
+ mkv-match --show-dir "/path/to/show" --confidence 0.8
25
+ ```
26
+ Start with a higher value and decrease if needed. Lower values may result in false positives.
27
+
28
+ 2. **Batch Processing with Progress**
29
+ The tool now shows detailed progress for each season:
30
+ ```bash
31
+ mkv-match --show-dir "/path/to/show"
32
+ ```
33
+
34
+ 3. **Speech Recognition**
35
+ - Uses Whisper for audio analysis
36
+ - Processes files in parallel for speed
37
+ - Shows real-time progress with completion estimates
38
+
39
+
40
+ ## Advanced Usage
41
+
42
+ ### Testing Changes
43
+
44
+ Always use dry-run first:
45
+ ```bash
46
+ mkv-match --show-dir "/path/to/show" --dry-run true
47
+ ```
48
+
49
+ ### Debug Output
50
+
51
+ Enable verbose logging:
52
+ ```bash
53
+ mkv-match --show-dir "/path/to/show" -v
54
+ ```
55
+
56
+ ### Log Files
57
+
58
+ Check the logs at:
59
+ ```
60
+ ~/.mkv-episode-matcher/logs/
61
+ ├── stdout.log # General operation logs
62
+ └── stderr.log # Error and warning logs
63
+ ```
64
+
65
+ ## Troubleshooting
66
+
67
+ ### Common Issues
68
+
69
+ 1. **File Permission Errors**
70
+ ```bash
71
+ # Check file permissions
72
+ chmod -R 644 "/path/to/show"
73
+ ```
74
+
75
+ 2. **API Rate Limits**
76
+ - Use rate limiting in configuration
77
+ - Implement exponential backoff
78
+
79
+ 3. **Speech Recognition**
80
+ - GPU recommended for faster processing
81
+ - Processing happens in 30s intervals
82
+ - More accurate than OCR-based methods
83
+
84
+
85
+ 4. **Low Confidence Matches**
86
+ - Increase confidence threshold
87
+ - Check reference subtitles for accuracy
88
+
89
+ 5. **No Matches Found**
90
+ - Verify file organization
91
+ - Check reference subtitles
92
+ - Enable verbose output
93
+
94
+ 6. **Performance Issues**
95
+ - Process one season at a time
96
+ - Check available disk space
97
+ - Monitor system resources