mkv-episode-matcher 0.3.3__py3-none-any.whl → 1.0.0__py3-none-any.whl
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.
- mkv_episode_matcher/__init__.py +8 -0
- mkv_episode_matcher/__main__.py +2 -177
- mkv_episode_matcher/asr_models.py +506 -0
- mkv_episode_matcher/cli.py +558 -0
- mkv_episode_matcher/core/config_manager.py +100 -0
- mkv_episode_matcher/core/engine.py +577 -0
- mkv_episode_matcher/core/matcher.py +214 -0
- mkv_episode_matcher/core/models.py +91 -0
- mkv_episode_matcher/core/providers/asr.py +85 -0
- mkv_episode_matcher/core/providers/subtitles.py +341 -0
- mkv_episode_matcher/core/utils.py +148 -0
- mkv_episode_matcher/episode_identification.py +550 -118
- mkv_episode_matcher/subtitle_utils.py +82 -0
- mkv_episode_matcher/tmdb_client.py +56 -14
- mkv_episode_matcher/ui/flet_app.py +708 -0
- mkv_episode_matcher/utils.py +262 -139
- mkv_episode_matcher-1.0.0.dist-info/METADATA +242 -0
- mkv_episode_matcher-1.0.0.dist-info/RECORD +23 -0
- {mkv_episode_matcher-0.3.3.dist-info → mkv_episode_matcher-1.0.0.dist-info}/WHEEL +1 -1
- mkv_episode_matcher-1.0.0.dist-info/licenses/LICENSE +21 -0
- mkv_episode_matcher/config.py +0 -82
- mkv_episode_matcher/episode_matcher.py +0 -100
- mkv_episode_matcher/libraries/pgs2srt/.gitignore +0 -2
- mkv_episode_matcher/libraries/pgs2srt/Libraries/SubZero/SubZero.py +0 -321
- mkv_episode_matcher/libraries/pgs2srt/Libraries/SubZero/dictionaries/data.py +0 -16700
- mkv_episode_matcher/libraries/pgs2srt/Libraries/SubZero/post_processing.py +0 -260
- mkv_episode_matcher/libraries/pgs2srt/README.md +0 -26
- mkv_episode_matcher/libraries/pgs2srt/__init__.py +0 -0
- mkv_episode_matcher/libraries/pgs2srt/imagemaker.py +0 -89
- mkv_episode_matcher/libraries/pgs2srt/pgs2srt.py +0 -150
- mkv_episode_matcher/libraries/pgs2srt/pgsreader.py +0 -225
- mkv_episode_matcher/libraries/pgs2srt/requirements.txt +0 -4
- mkv_episode_matcher/mkv_to_srt.py +0 -302
- mkv_episode_matcher/speech_to_text.py +0 -90
- mkv_episode_matcher-0.3.3.dist-info/METADATA +0 -125
- mkv_episode_matcher-0.3.3.dist-info/RECORD +0 -25
- {mkv_episode_matcher-0.3.3.dist-info → mkv_episode_matcher-1.0.0.dist-info}/entry_points.txt +0 -0
- {mkv_episode_matcher-0.3.3.dist-info → mkv_episode_matcher-1.0.0.dist-info}/top_level.txt +0 -0
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: mkv-episode-matcher
|
|
3
|
-
Version: 0.3.3
|
|
4
|
-
Summary: The MKV Episode Matcher is a tool for identifying TV series episodes from MKV files and renaming the files accordingly.
|
|
5
|
-
Home-page: https://github.com/Jsakkos/mkv-episode-matcher
|
|
6
|
-
Author: Jonathan Sakkos
|
|
7
|
-
Author-email: Jsakkos <jonathansakkos@gmail.com>
|
|
8
|
-
License: MIT
|
|
9
|
-
Project-URL: Documentation, https://github.com/Jsakkos/mkv-episode-matcher#readme
|
|
10
|
-
Project-URL: Issues, https://github.com/Jsakkos/mkv-episode-matcher/issues
|
|
11
|
-
Project-URL: Source, https://github.com/Jsakkos/mkv-episode-matcher
|
|
12
|
-
Classifier: Development Status :: 4 - Beta
|
|
13
|
-
Classifier: Programming Language :: Python
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
-
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
16
|
-
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
17
|
-
Requires-Python: >=3.9
|
|
18
|
-
Description-Content-Type: text/markdown
|
|
19
|
-
Requires-Dist: configparser>=7.1.0
|
|
20
|
-
Requires-Dist: ffmpeg>=1.4
|
|
21
|
-
Requires-Dist: loguru>=0.7.2
|
|
22
|
-
Requires-Dist: openai-whisper>=20240930
|
|
23
|
-
Requires-Dist: opensubtitlescom>=0.1.5
|
|
24
|
-
Requires-Dist: pytesseract>=0.3.13
|
|
25
|
-
Requires-Dist: rapidfuzz>=3.10.1
|
|
26
|
-
Requires-Dist: requests>=2.32.3
|
|
27
|
-
Requires-Dist: tmdb-client>=0.0.1
|
|
28
|
-
Requires-Dist: wave>=0.0.2
|
|
29
|
-
|
|
30
|
-
# MKV Episode Matcher
|
|
31
|
-
|
|
32
|
-
[](https://pypi.org/project/mkv-episode-matcher/)
|
|
33
|
-
[](https://pypi.org/project/mkv-episode-matcher/)
|
|
34
|
-
[](https://opensource.org/licenses/MIT)
|
|
35
|
-
[](https://jsakkos.github.io/mkv-episode-matcher/)
|
|
36
|
-
[](https://pepy.tech/project/mkv-episode-matcher)
|
|
37
|
-
[](https://github.com/Jsakkos/mkv-episode-matcher/commits/main)
|
|
38
|
-
[](https://github.com/Jsakkos/mkv-episode-matcher/issues)
|
|
39
|
-
[](https://github.com/Jsakkos/mkv-episode-matcher/actions/workflows/tests.yml)
|
|
40
|
-
[](https://codecov.io/gh/Jsakkos/mkv-episode-matcher)
|
|
41
|
-
|
|
42
|
-
Automatically match and rename your MKV TV episodes using The Movie Database (TMDb).
|
|
43
|
-
|
|
44
|
-
## Features
|
|
45
|
-
|
|
46
|
-
- 🎯 **Automatic Episode Matching**: Uses TMDb to accurately identify episodes
|
|
47
|
-
- 📝 **Subtitle Extraction**: Extracts subtitles from MKV files
|
|
48
|
-
- 🔍 **OCR Support**: Handles image-based subtitles
|
|
49
|
-
- 🚀 **Multi-threaded**: Fast processing of multiple files
|
|
50
|
-
- ⬇️ **Subtitle Downloads**: Integration with OpenSubtitles
|
|
51
|
-
- ✨ **Bulk Processing**: Handle entire seasons at once
|
|
52
|
-
- 🧪 **Dry Run Mode**: Test changes before applying
|
|
53
|
-
|
|
54
|
-
## Quick Start
|
|
55
|
-
|
|
56
|
-
1. Install the package:
|
|
57
|
-
```bash
|
|
58
|
-
pip install mkv-episode-matcher
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
2. Run on your show directory:
|
|
62
|
-
```bash
|
|
63
|
-
mkv-match --show-dir "path/to/your/show" --season 1
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
## Requirements
|
|
67
|
-
|
|
68
|
-
- Python 3.8 or higher
|
|
69
|
-
- TMDb API key
|
|
70
|
-
- OpenSubtitles account (optional, for subtitle downloads)
|
|
71
|
-
|
|
72
|
-
## Documentation
|
|
73
|
-
|
|
74
|
-
Full documentation is available at [https://jsakkos.github.io/mkv-episode-matcher/](https://jsakkos.github.io/mkv-episode-matcher/)
|
|
75
|
-
|
|
76
|
-
## Basic Usage
|
|
77
|
-
|
|
78
|
-
```python
|
|
79
|
-
from mkv_episode_matcher import process_show
|
|
80
|
-
|
|
81
|
-
# Process all seasons
|
|
82
|
-
process_show()
|
|
83
|
-
|
|
84
|
-
# Process specific season
|
|
85
|
-
process_show(season=1)
|
|
86
|
-
|
|
87
|
-
# Test run without making changes
|
|
88
|
-
process_show(season=1, dry_run=True)
|
|
89
|
-
|
|
90
|
-
# Process and download subtitles
|
|
91
|
-
process_show(get_subs=True)
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
## Directory Structure
|
|
95
|
-
|
|
96
|
-
MKV Episode Matcher expects your TV shows to be organized as follows:
|
|
97
|
-
|
|
98
|
-
```
|
|
99
|
-
Show Name/
|
|
100
|
-
├── Season 1/
|
|
101
|
-
│ ├── episode1.mkv
|
|
102
|
-
│ ├── episode2.mkv
|
|
103
|
-
├── Season 2/
|
|
104
|
-
│ ├── episode1.mkv
|
|
105
|
-
│ └── episode2.mkv
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
## Contributing
|
|
109
|
-
|
|
110
|
-
1. Fork the repository
|
|
111
|
-
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
|
|
112
|
-
3. Commit your changes (`git commit -m 'Add amazing feature'`)
|
|
113
|
-
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
114
|
-
5. Open a Pull Request
|
|
115
|
-
|
|
116
|
-
## License
|
|
117
|
-
|
|
118
|
-
Distributed under the MIT License. See `LICENSE` for more information.
|
|
119
|
-
|
|
120
|
-
## Acknowledgments
|
|
121
|
-
|
|
122
|
-
- [TMDb](https://www.themoviedb.org/) for their excellent API
|
|
123
|
-
- [OpenSubtitles](https://www.opensubtitles.com/) for subtitle integration
|
|
124
|
-
- All contributors who have helped improve this project
|
|
125
|
-
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
mkv_episode_matcher/.gitattributes,sha256=Gh2-F2vCM7SZ01pX23UT8pQcmauXWfF3gwyRSb6ZAFs,66
|
|
2
|
-
mkv_episode_matcher/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
3
|
-
mkv_episode_matcher/__main__.py,sha256=3ZcCUxeI7rUA-4oiCD2WXBiOFJAqLsVVWfZKN446FwQ,6792
|
|
4
|
-
mkv_episode_matcher/config.py,sha256=zDDKBcsDt5fME9BRqiTi7yWKeast1pZh36BNYMvIBYM,2419
|
|
5
|
-
mkv_episode_matcher/episode_identification.py,sha256=NopEkcBFFUjjrAujogeVcdISv8UZHFjYr5RJLM0j468,5875
|
|
6
|
-
mkv_episode_matcher/episode_matcher.py,sha256=BJ76DPxsmZs-KfHZZ_0WvKSBZWXsUEO6lW34YdYEaxM,3979
|
|
7
|
-
mkv_episode_matcher/mkv_to_srt.py,sha256=4yxBHRVhgVby0UtQ2aTXGuoQpid8pkgjMIaHU6GCdzc,10857
|
|
8
|
-
mkv_episode_matcher/speech_to_text.py,sha256=-bnGvmtPCKyHFPEaXwIcEYTf_P13rNpAJA-2UFeRFrs,2806
|
|
9
|
-
mkv_episode_matcher/tmdb_client.py,sha256=LbMCgjmp7sCbrQo_CDlpcnryKPz5S7inE24YY9Pyjk4,4172
|
|
10
|
-
mkv_episode_matcher/utils.py,sha256=YthQByumTL5eGdFTJMoI8csAe4Vc-sPo8XqOKzbj4g4,13975
|
|
11
|
-
mkv_episode_matcher/libraries/pgs2srt/.gitignore,sha256=mt3uxWYZaFurMw_yGE258gWhtGKPVR7e3Ll4ALJpyj4,23
|
|
12
|
-
mkv_episode_matcher/libraries/pgs2srt/README.md,sha256=olb25G17tj0kxPgp_LcH5I2QWXjgP1m8JFyjYRGz4UU,1374
|
|
13
|
-
mkv_episode_matcher/libraries/pgs2srt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
|
-
mkv_episode_matcher/libraries/pgs2srt/imagemaker.py,sha256=mOlUt8eJ4LOqMYerOuWmQPPWcB-Umup2lBJlqzy_pPg,2736
|
|
15
|
-
mkv_episode_matcher/libraries/pgs2srt/pgs2srt.py,sha256=UdCCUUWxKXCxBebiNBsrM95R6-zmJhSUAHcEPxUmbNU,4416
|
|
16
|
-
mkv_episode_matcher/libraries/pgs2srt/pgsreader.py,sha256=h5vZSLPVHir-epuNa-L5MpJYpyyUk0h_13DtmrNG9Xc,7001
|
|
17
|
-
mkv_episode_matcher/libraries/pgs2srt/requirements.txt,sha256=sg87dqWw_qpbwciw-Mc5mRJnV9LaCni2cybnT5ANqnA,59
|
|
18
|
-
mkv_episode_matcher/libraries/pgs2srt/Libraries/SubZero/SubZero.py,sha256=geT1LXdVd8yED9zoJ9K1XfP2JzGcM7u1SslHYrJI09o,10061
|
|
19
|
-
mkv_episode_matcher/libraries/pgs2srt/Libraries/SubZero/post_processing.py,sha256=GKtVy_Lxv-z27mkRG8pJF2znKWXwZTot7jL6kN-zIxM,10503
|
|
20
|
-
mkv_episode_matcher/libraries/pgs2srt/Libraries/SubZero/dictionaries/data.py,sha256=AlJHUYXl85J95OzGRik-AHVfzDd7Q8BJCvD4Nr8kRIk,938598
|
|
21
|
-
mkv_episode_matcher-0.3.3.dist-info/METADATA,sha256=bAgcQzwsAaYHZ9YgKdTtSB1KtKjc0Y4Ylx_mQyll-I4,4640
|
|
22
|
-
mkv_episode_matcher-0.3.3.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
|
23
|
-
mkv_episode_matcher-0.3.3.dist-info/entry_points.txt,sha256=IglJ43SuCZq2eQ3shMFILCkmQASJHnDCI3ogohW2Hn4,64
|
|
24
|
-
mkv_episode_matcher-0.3.3.dist-info/top_level.txt,sha256=XRLbd93HUaedeWLtkyTvQjFcE5QcBRYa3V-CfHrq-OI,20
|
|
25
|
-
mkv_episode_matcher-0.3.3.dist-info/RECORD,,
|
{mkv_episode_matcher-0.3.3.dist-info → mkv_episode_matcher-1.0.0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|