mkvpriority 1.5.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.
@@ -0,0 +1,2 @@
1
+ */__pycache__/
2
+ */*.pyc
@@ -0,0 +1,17 @@
1
+ __pycache__/
2
+ .ruff_cache/
3
+ .mypy_cache/
4
+ .pytest_cache/
5
+ .vscode/
6
+ .venv/
7
+ .env
8
+ *.pyc
9
+ *.ipynb
10
+ media/
11
+ config/
12
+ *.yaml
13
+ !compose.yaml
14
+ *.toml
15
+ !config.toml
16
+ *.db
17
+ .DS_Store
@@ -0,0 +1,37 @@
1
+ FROM ghcr.io/astral-sh/uv:python3.14-bookworm-slim AS builder
2
+ ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy
3
+ ENV UV_PYTHON_DOWNLOADS=0
4
+
5
+ WORKDIR /app
6
+
7
+ RUN --mount=type=cache,target=/root/.cache/uv \
8
+ --mount=type=bind,source=uv.lock,target=uv.lock \
9
+ --mount=type=bind,source=pyproject.toml,target=pyproject.toml \
10
+ uv sync --locked --no-install-project --no-dev
11
+
12
+ FROM python:3.14-slim-bookworm
13
+ ENV PYTHONUNBUFFERED=1
14
+
15
+ WORKDIR /app
16
+
17
+ RUN apt-get update && apt-get install -y --no-install-recommends \
18
+ mkvtoolnix \
19
+ && rm -rf /var/lib/apt/lists/*
20
+
21
+ COPY --from=builder /app/.venv /app/.venv
22
+ COPY --chmod=755 <<-"EOF" /app/.venv/bin/mkvpriority
23
+ #!/app/.venv/bin/python
24
+ import sys
25
+ from mkvpriority.main import main
26
+ if __name__ == '__main__':
27
+ sys.exit(main())
28
+ EOF
29
+
30
+ COPY config.toml mkvpriority.sh pyproject.toml ./
31
+ COPY src ./src
32
+
33
+ ENV MKVPRIORITY_EXT_DIR="/config/extensions"
34
+
35
+ ENV PYTHONPATH="/app/src"
36
+ ENV PATH="/app/.venv/bin:$PATH"
37
+ ENTRYPOINT ["python", "-m", "mkvpriority.entrypoint"]
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Ken Sible
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,14 @@
1
+ Metadata-Version: 2.4
2
+ Name: mkvpriority
3
+ Version: 1.5.0
4
+ Summary: Automatically Prioritize Audio/Subtitle Tracks in MKV Files
5
+ Project-URL: homepage, https://github.com/kennethsible/mkvpriority
6
+ Author-email: Ken Sible <ksible@outlook.com>
7
+ License: MIT
8
+ License-File: LICENSE
9
+ Requires-Python: <3.15,>=3.14
10
+ Requires-Dist: aiohttp>=3.13.5
11
+ Requires-Dist: apscheduler>=3.11.2
12
+ Requires-Dist: cron-descriptor>=2.0.8
13
+ Requires-Dist: pycountry>=26.2.16
14
+ Requires-Dist: requests>=2.34.2
@@ -0,0 +1,255 @@
1
+ <div align="center">
2
+ <img alt="MKVPriority Banner" src="images/mkvpriority_banner.svg" width="600">
3
+ </div>
4
+ <p align="center">
5
+ <img src="https://github.com/kennethsible/mkvpriority/actions/workflows/publish.yaml/badge.svg" alt="MKVPriority Release" />
6
+ <img src="https://github.com/kennethsible/mkvpriority/actions/workflows/pytest.yaml/badge.svg" alt="MKVPriority CI">
7
+ </p>
8
+
9
+ **MKVPriority** assigns configurable priority scores to audio and subtitle tracks, similar to custom formats in Radarr/Sonarr. MKV flags, such as default and forced, are automatically set for the highest-priority tracks (e.g., 5.1 surround and ASS subtitles), while lower-priority tracks (e.g., stereo audio and PGS subtitles) are deprioritized.
10
+
11
+ > [!IMPORTANT]
12
+ > MKVPriority modifies track flags in place using `mkvpropedit` (**no remuxing**), allowing media players to automatically select the best audio and subtitle tracks according to your preferences.
13
+
14
+ ## Features
15
+
16
+ - Assigns **configurable priority scores** to audio and subtitle tracks (similar to **custom formats** in Radarr/Sonarr)
17
+ - Automatically sets **default/forced flags** for the highest priority tracks (e.g., Japanese audio and ASS subtitles)
18
+ - Deprioritizes **unwanted audio and subtitle tracks** (e.g., English dubs, commentary tracks, signs/songs)
19
+ - Periodically scans your media library using a **cron schedule** and processes new MKV files with a database
20
+ - Integrates with Radarr and Sonarr using a **custom script** to process new MKV files as they are imported
21
+ - Supports extension modules for optional, user-defined **post-processors**, allowing for edge-case handling
22
+
23
+ ## Docker Image
24
+
25
+ A Docker image is provided to simplify the installation process and enable quick deployment.
26
+
27
+ ```bash
28
+ docker run --rm -v /path/to/media:/media ghcr.io/kennethsible/mkvpriority /media
29
+ ```
30
+
31
+ ### Use a Custom Config
32
+
33
+ You can specify your own preferences by creating a custom TOML config that defines track filters by name and assigns scores by property. To override the default config, use a bind mount:
34
+
35
+ ```bash
36
+ docker run --rm -u ${PUID}:${PGID} \
37
+ -v /path/to/media:/media \
38
+ -v /path/to/mkvpriority/config:/config \
39
+ ghcr.io/kennethsible/mkvpriority /media \
40
+ --config /config/custom.toml
41
+ ```
42
+
43
+ > [!IMPORTANT]
44
+ > Before starting the Docker container, you should pre-create the config folder on the host. Otherwise, Docker will create the folder as the root user, causing Python to raise a `PermissionError`.
45
+
46
+ ### Use an Archive Database
47
+
48
+ You can periodically process your media library using a cron job and an archive database. To keep track of processed files, create an `archive.db` file and use a bind mount:
49
+
50
+ ```bash
51
+ docker run --rm -u ${PUID}:${PGID} \
52
+ -v /path/to/media:/media \
53
+ -v /path/to/mkvpriority/config:/config \
54
+ ghcr.io/kennethsible/mkvpriority /media \
55
+ --archive /config/archive.db
56
+ ```
57
+
58
+ ## TOML Configuration
59
+
60
+ All behavior is configured through TOML files, which assign priority scores to track properties, such as languages and codecs, and define custom filters for track names, such as "signs" and "songs." To get started, check the example TOML file that has been provided for anime ([see here](https://github.com/kennethsible/mkvpriority/blob/main/config.toml)).
61
+
62
+ ### Example: Subtitle Codecs
63
+
64
+ ```toml
65
+ [subtitle_codecs]
66
+ "S_TEXT/ASS" = 30 # Stylized (Advanced SubStationAlpha)
67
+ "S_TEXT/SSA" = 30 # Legacy Stylized (SubStationAlpha)
68
+ "S_TEXT/UTF8" = 20 # Plain Text (SubRip/SRT)
69
+ "S_TEXT/WEBVTT" = 20 # Web-Based Video Text (Used in Streaming)
70
+ "S_HDMV/PGS" = 10 # Image-Based (Used in Blu-rays)
71
+ S_VOBSUB = 10 # Legacy Image-Based (Used in DVDs)
72
+ ```
73
+
74
+ ## Radarr/Sonarr Integration
75
+
76
+ You can process new MKV files as they are imported into Radarr/Sonarr by adding the custom script `mkvpriority.sh` and selecting 'On File Import' and 'On File Upgrade'. In order for Radarr/Sonarr to recognize the custom script, it must be visible inside the container. When using Radarr/Sonarr, you can assign scores to the original audio language (`org`).
77
+
78
+ > [!NOTE]
79
+ > To add a custom script to Radarr/Sonarr, go to Settings > Connect > Add Connection > Custom Script.
80
+
81
+ ```yaml
82
+ mkvpriority:
83
+ image: ghcr.io/kennethsible/mkvpriority
84
+ container_name: mkvpriority
85
+ user: ${PUID}:${PGID}
86
+ environment:
87
+ WEBHOOK_PORT: '8080'
88
+ MKVPRIORITY_ARGS: >
89
+ --archive /config/archive.db
90
+ volumes:
91
+ - /path/to/media:/media
92
+ - /path/to/mkvpriority/config:/config
93
+ restart: unless-stopped
94
+ ```
95
+
96
+ > [!IMPORTANT]
97
+ > If you are not using "mkvpriority" as the name of your container, you will need to update it in the custom script.
98
+ > Also, verify that the mount point for your media directory in MKVPriority is the same as the one used by Radarr/Sonarr.
99
+
100
+ ### Use Multiple Configs
101
+
102
+ MKVPriority supports multiple, tag-based configs that can be customized to match the tagging system used in Radarr/Sonarr. For example, you can create a separate config for anime by adding an `anime` tag in Radarr/Sonarr either manually or via auto-tagging. Then, append the `::anime` tag to the config path in the MKVPriority arguments.
103
+
104
+ ```yaml
105
+ mkvpriority:
106
+ image: ghcr.io/kennethsible/mkvpriority
107
+ container_name: mkvpriority
108
+ user: ${PUID}:${PGID}
109
+ environment:
110
+ WEBHOOK_PORT: '8080'
111
+ MKVPRIORITY_ARGS: >
112
+ --config /config/anime.toml::anime
113
+ --archive /config/archive.db
114
+ volumes:
115
+ - /path/to/media:/media
116
+ - /path/to/mkvpriority/config:/config
117
+ restart: unless-stopped
118
+ ```
119
+
120
+ > [!IMPORTANT]
121
+ > In Radarr/Sonarr, a given movie or show can have multiple tags. However, MKVPriority only uses the first tag in alphabetical order. Therefore, you may need to create new tags specifically for MKVPriority.
122
+
123
+ ## Cron Scheduler
124
+
125
+ You can use the built-in cron scheduler to periodically scan your media library and process MKV files. When paired with an archive database, MKVPriority will only process new files with each scan.
126
+
127
+ ```yaml
128
+ mkvpriority:
129
+ image: ghcr.io/kennethsible/mkvpriority
130
+ container_name: mkvpriority
131
+ user: ${PUID}:${PGID}
132
+ environment:
133
+ TZ: "America/New_York"
134
+ CRON_SCHEDULE: "0 0 * * *"
135
+ CRON_TARGET_PATHS: /media
136
+ MKVPRIORITY_ARGS: >
137
+ --archive /config/archive.db
138
+ volumes:
139
+ - /path/to/media:/media
140
+ - /path/to/mkvpriority/config:/config
141
+ restart: unless-stopped
142
+ ```
143
+
144
+ > [!NOTE]
145
+ > MKVPriority supports [non-standard macros](https://en.wikipedia.org/wiki/Cron#Nonstandard_predefined_scheduling_definitions) for cron expressions, such as `@daily` and `@hourly`.
146
+
147
+ ## Extension Modules
148
+
149
+ MKVPriority supports user-defined extension modules for optional post-processing. This feature is designed to handle complex library edge cases, integrate your workflow with external tools, and provide an open-ended automation framework, such as automatically extracting embedded subtitles or dynamically restyling subtitle fonts.
150
+
151
+ ### Example: Subtitle Extractor
152
+
153
+ You can use the `subtitle_extractor` extension to extract embedded subtitles with the highest priority score. This may result in smoother playback if your media player doesn't support certain subtitle formats. For example, if the player needs to transcode or burn in embedded subtitles, it must first demux and process the entire MKV container. To use this feature, add `extract_embedded_subtitles = true` to the top level of your config file and include this extension in your arguments.
154
+
155
+ ```text
156
+ Naming Format: {basename}.{language}.{default,forced}.{srt,ass}
157
+ ```
158
+
159
+ > [!NOTE]
160
+ > To avoid changing internal track flags and *only* use external subtitles, use the subtitle extractor with the `--dry-run` argument since subtitle extraction still runs during a dry run, which only prevents changes to the MKV container.
161
+
162
+ ### Example: Subtitle Restyler
163
+
164
+ You can use the `subtitle_restyler` extension to restyle external subtitles by defining style overrides in your config file. Since this extension operates on external subtitles, it can be seamlessly chained with the subtitle extractor. To ensure this extension only restyles dialogue subtitles, it filters out styles that exceed calibrated thresholds for spatial, karaoke, and drawing tags. A complete list of restylable attributes can be found in the extension's Python script on GitHub.
165
+
166
+ ```toml
167
+ [subtitle_styles]
168
+ Fontsize = 72
169
+ Bold = -1
170
+ Outline = 3.6
171
+ Shadow = 1.5
172
+ ```
173
+
174
+ ### Example: Multiplexer (Strip/Reorder Tracks)
175
+
176
+ You can use the `multiplexer` extension to strip tracks for unwanted languages and reorder tracks by priority scores. Since remuxing conflicts with the core "no-remux" design, these features are delegated to an extension module. To enable them, add the `[multiplexer]` section to your config file and include this extension in your arguments.
177
+
178
+ ```toml
179
+ [multiplexer]
180
+ strip_tracks = true
181
+ reorder_tracks = true
182
+ ```
183
+
184
+ ### Creating Extensions
185
+
186
+ You can easily write your own post-processing scripts to handle custom logic.
187
+
188
+ 1. Create a Python script (e.g., `my_extension.py`) inside any of the following:
189
+ - current working directory (recommend for local development)
190
+ - `~/.config/mkvpriority/extensions` (recommended for `pip`)
191
+ - `/config/extensions` (recommended for Docker)
192
+ 2. Import the `Extension` class and implement the `process_file` method:
193
+
194
+ ```python
195
+ class Extension(ABC):
196
+ def __init__(self, extension_name: str | None = None):
197
+ name = extension_name or self.__class__.__name__
198
+ self.extension_logger = logging.getLogger(name)
199
+
200
+ @abstractmethod
201
+ def process_file(
202
+ self,
203
+ file_path: Path,
204
+ video_tracks: list[Track],
205
+ audio_tracks: list[Track],
206
+ subtitle_tracks: list[Track],
207
+ config: Config,
208
+ dry_run: bool = False,
209
+ ) -> None:
210
+ raise NotImplementedError
211
+ ```
212
+
213
+ 3. Use `-i/--include` with the script name (without the `.py` extension):
214
+
215
+ ```bash
216
+ mkvpriority -i my_extension
217
+ ```
218
+
219
+ > [!NOTE]
220
+ > Check the `extensions` folder in the GitHub repository for example scripts. In addition to the **subtitle extractor**, there's also a **subtitle restyler** that lets you define style overrides in your config file, and there's a **multiplexer** that lets you strip tracks for languages not included in your config file (as well as reorder tracks by priority scores).
221
+
222
+ ## CLI Usage
223
+
224
+ [`mkvtoolnix`](https://mkvtoolnix.download/) must be installed on your system for `mkvpropedit` (unless you are using the Docker image).
225
+
226
+ ```text
227
+ usage: mkvpriority [-h] [-c TOML_PATH[::TAG]] [-a DB_PATH] [-i MODULE_NAME] [-v] [-x] [-q] [-p] [-n] [-r] [INPUT_PATH[::TAG] ...]
228
+
229
+ positional arguments:
230
+ INPUT_PATH[::TAG] files or directories
231
+
232
+ options:
233
+ -c, --config TOML_PATH[::TAG]
234
+ -a, --archive DB_PATH
235
+ -i, --include MODULE_NAME
236
+ include extension module
237
+ -v, --verbose inspect track metadata
238
+ -x, --debug show mkvtoolnix output
239
+ -q, --quiet suppress logging output
240
+ -p, --prune prune database entries
241
+ -n, --dry-run simulate track changes
242
+ -r, --restore restore original tracks
243
+ ```
244
+
245
+ ### Python Package
246
+
247
+ To use MKVPriority without Docker, run the following `pip` command:
248
+
249
+ ```bash
250
+ pip install 'git+ssh://git@github.com/kennethsible/mkvpriority.git'
251
+ ```
252
+
253
+ ## Hardlinks Limitation
254
+
255
+ MKVPriority avoids remuxing by using `mkvpropedit`, but this still affects hardlinks since the metadata is modified. To avoid breaking hardlinks, use the subtitle extractor with the `--dry-run` argument ([see here](#example-subtitle-extractor)).
@@ -0,0 +1,30 @@
1
+ services:
2
+ sonarr:
3
+ image: lscr.io/linuxserver/sonarr
4
+ container_name: sonarr
5
+ environment:
6
+ PUID: ${PUID:-1000}
7
+ PGID: ${PGID:-1000}
8
+ volumes:
9
+ - /path/to/media:/media # <-- same mount point
10
+ - /path/to/sonarr/config:/config
11
+ - /path/to/mkvpriority/config:/mkvpriority
12
+ ports:
13
+ - 8989:8989
14
+ restart: unless-stopped
15
+
16
+ mkvpriority:
17
+ image: ghcr.io/kennethsible/mkvpriority
18
+ container_name: mkvpriority
19
+ user: ${PUID:-1000}:${PGID:-1000}
20
+ environment:
21
+ WEBHOOK_PORT: "8080"
22
+ MKVPRIORITY_ARGS: >
23
+ --archive /config/archive.db
24
+ # TZ: "America/New_York"
25
+ # CRON_SCHEDULE: "0 0 * * *"
26
+ # CRON_TARGET_PATH: /media
27
+ volumes:
28
+ - /path/to/media:/media # <-- same mount point
29
+ - /path/to/mkvpriority/config:/config
30
+ restart: unless-stopped
@@ -0,0 +1,94 @@
1
+ # === Audio Operation Mode ===
2
+ # Determines how the best-scoring audio track will be flagged:
3
+ # - 'default' = Sets the chosen track as default (recommended for most players)
4
+ # - 'forced' = Stronger flag; some players prioritize forced tracks
5
+ # - 'disabled' = Disables non-selected tracks (ignored by most players)
6
+ # - 'enabled' = Re-enables tracks previously disabled (used to undo 'disabled')
7
+ audio_mode = ["default"]
8
+
9
+ # === Subtitle Operation Mode ===
10
+ # Similar to audio_mode, controls track flags for subtitles:
11
+ # - 'default' = Sets the chosen track as default (recommended for most players)
12
+ # - 'forced' = Stronger flag; some players prioritize forced tracks
13
+ # - 'disabled' = Disables non-selected tracks (ignored by most players)
14
+ # - 'enabled' = Re-enables tracks previously disabled (used to undo 'disabled')
15
+ # Ensures subtitles are shown even if the player isn't configured properly.
16
+ subtitle_mode = ["default", "forced"]
17
+
18
+ # === Audio Language Preferences ===
19
+ # Example: Prioritize Japanese subs over English dubs.
20
+ [audio_languages]
21
+ org = 130 # Original Language (Radarr/Sonarr)
22
+ jpn = 100 # Japanese
23
+ eng = 70 # English
24
+ und = 30 # Undefined (Fallback)
25
+
26
+ # === Audio Codec Preferences ===
27
+ # Example: Prioritize audio tracks with higher fidelity.
28
+ [audio_codecs]
29
+ A_DTSHD_MA = 10 # DTS-HD Master Audio
30
+ A_TRUEHD = 9 # Dolby TrueHD
31
+ A_FLAC = 8 # Free Lossless Audio Codec
32
+ A_DTS = 7 # DTS
33
+ A_OPUS = 6 # Opus
34
+ A_EAC3 = 5 # Dolby Digital Plus (Enhanced AC-3)
35
+ A_AC3 = 4 # Dolby Digital (AC-3)
36
+ A_AAC = 3 # Advanced Audio Coding
37
+ "A_MPEG/L3" = 2 # MP3 (MPEG Layer III)
38
+
39
+ # === Audio Channel Preferences ===
40
+ # Example: Prioritize audio tracks with more channels.
41
+ [audio_channels]
42
+ 8 = 10 # 7.1 Surround
43
+ 7 = 9 # 6.1 Surround
44
+ 6 = 8 # 5.1 Surround
45
+ 5 = 7 # 5.0 Surround
46
+ 4 = 6 # Quadraphonic / 4.0 Surround
47
+ 3 = 5 # 2.1 or 3.0
48
+ 2 = 4 # Stereo
49
+ 1 = 3 # Mono
50
+
51
+ # === Audio Track Filters ===
52
+ # Looks at the track name to detect its purpose and assign priority.
53
+ # This is especially useful when language or codec alone isn't enough.
54
+ [audio_filters]
55
+ commentar = -200 # Commentary Track
56
+ descript = -200 # Visually Impaired
57
+
58
+ # === Subtitle Language Preferences ===
59
+ # Example: Prioritize English subtitles with Japanese audio.
60
+ [subtitle_languages]
61
+ enm = 110 # English Modified (Anime-Specific)
62
+ eng = 100 # English
63
+ jpn = 90 # Japanese (Sometimes Mislabled)
64
+ und = 30 # Undefined (Fallback)
65
+
66
+ # === Subtitle Codec Preferences ===
67
+ # Example: Prioritize subtitle tracks with higher stylability.
68
+ [subtitle_codecs]
69
+ "S_TEXT/ASS" = 2 # Stylized Subtitles (Advanced SubStationAlpha)
70
+ "S_TEXT/SSA" = 2 # Legacy Stylized Subtitles (SubStationAlpha)
71
+ "S_TEXT/UTF8" = 1 # Plain Text Subtitles (SubRip/SRT)
72
+ "S_TEXT/WEBVTT" = 1 # Web-Based Video Text (Used in Streaming)
73
+ "S_HDMV/PGS" = 0 # Image-Based (Used in Blu-rays)
74
+ S_VOBSUB = 0 # Legacy Image-Based (Used in DVDs)
75
+
76
+ # === Subtitle Track Filters ===
77
+ # Looks at the track name to detect its purpose and assign priority.
78
+ # This is especially useful when language or codec alone isn't enough.
79
+ [subtitle_filters]
80
+ full = 10 # Spoken Subtitles & On-Screen Text
81
+ honorific = 9 # Honorifics Subtitles (Cultural)
82
+ official = 8 # Official Subtitles (Localized)
83
+ dialog = 7 # Spoken Content Subtitles
84
+ sign = -15 # On-Screen Text Subtitles
85
+ song = -15 # Lyrics or Karaoke Subtitles
86
+ commentar = -200 # Commentary Track Subtitles
87
+ sdh = -200 # Deaf & Hard of Hearing
88
+
89
+ # === Subtitle Style Overrides ===
90
+ [subtitle_styles]
91
+ fontname = "Cabin"
92
+ fontsize = 75
93
+ outline = 3.6
94
+ shadow = 1.8
@@ -0,0 +1,36 @@
1
+ services:
2
+ sonarr:
3
+ image: lscr.io/linuxserver/sonarr
4
+ container_name: sonarr
5
+ environment:
6
+ PUID: ${PUID:-1000}
7
+ PGID: ${PGID:-1000}
8
+ volumes:
9
+ - /path/to/media:/media # <-- same mount point
10
+ - /path/to/sonarr/config:/config
11
+ - /path/to/mkvpriority/config:/mkvpriority
12
+ ports:
13
+ - 8989:8989
14
+ restart: unless-stopped
15
+
16
+ mkvpriority:
17
+ image: ghcr.io/kennethsible/mkvpriority
18
+ container_name: mkvpriority
19
+ user: ${PUID:-1000}:${PGID:-1000}
20
+ command: webhook
21
+ environment:
22
+ # TZ: "America/New_York"
23
+ # CRON_SCHEDULE: "0 0 * * *"
24
+ # LOG_MAX_BYTES: 5242880
25
+ # LOG_MAX_FILES: 3
26
+ WEBHOOK_RECEIVER: "true"
27
+ MKVPRIORITY_ARGS: >
28
+ --archive /config/archive.db
29
+ # SONARR_URL: http://sonarr:8989
30
+ # SONARR_API_KEY: ${SONARR_API_KEY}
31
+ # RADARR_URL: http://radarr:7878
32
+ # RADARR_API_KEY: ${RADARR_API_KEY}
33
+ volumes:
34
+ - /path/to/media:/media # <-- same mount point
35
+ - /path/to/mkvpriority/config:/config
36
+ restart: unless-stopped
@@ -0,0 +1,96 @@
1
+ # === Audio Operation Mode ===
2
+ # Determines how the best-scoring audio track will be flagged:
3
+ # - "default" = Sets the chosen track as default (recommended for most players)
4
+ # - "forced" = Stronger flag; some players prioritize forced tracks
5
+ # - "disabled" = Disables non-selected tracks (ignored by most players)
6
+ # - "enabled" = Re-enables disabled tracks (used to undo "disabled")
7
+ audio_mode = ["default"]
8
+
9
+ # === Subtitle Operation Mode ===
10
+ # Determines how the best-scoring subtitle track will be flagged:
11
+ # - "default" = Sets the chosen track as default (recommended for most players)
12
+ # - "forced" = Stronger flag; some players prioritize forced tracks
13
+ # - "disabled" = Disables non-selected tracks (ignored by most players)
14
+ # - "enabled" = Re-enables disabled tracks (used to undo "disabled")
15
+ # Ensures subtitles are shown even if the player isn't configured properly.
16
+ subtitle_mode = ["default", "forced"]
17
+
18
+ # === Penalize Unscored Languages ===
19
+ # Determines how subtitle languages without scores are handled:
20
+ # - true = Heavily penalizes unscored languages (score: -10000)
21
+ # - false = Assigns a neutral score (0) to unscored languages
22
+ # Ensures subtitles in non-native languages are always stripped of flags.
23
+ penalize_unscored_languages = false
24
+
25
+ # === Audio Language Preferences ===
26
+ # Example: Prioritize Japanese subs over English dubs.
27
+ [audio_languages]
28
+ org = 300 # Original Language (Radarr/Sonarr)
29
+ jpn = 200 # Japanese
30
+ eng = 100 # English
31
+ und = 0 # Undefined (Fallback)
32
+
33
+ # === Audio Codec Preferences ===
34
+ # Example: Prioritize audio tracks with higher fidelity.
35
+ [audio_codecs]
36
+ "A_PCM/INT/LIT" = 50 # LPCM (Linear PCM)
37
+ A_DTSHD_MA = 50 # DTS-HD Master Audio
38
+ A_TRUEHD = 50 # Dolby TrueHD
39
+ A_FLAC = 50 # Free Lossless Audio Codec
40
+ A_DTS = 40 # DTS
41
+ A_OPUS = 30 # Opus
42
+ A_EAC3 = 30 # Dolby Digital Plus (Enhanced AC-3)
43
+ A_AC3 = 20 # Dolby Digital (AC-3)
44
+ A_AAC = 20 # Advanced Audio Coding
45
+ A_VORBIS = 20 # Vorbis
46
+ "A_MPEG/L3" = 10 # MP3 (MPEG Layer III)
47
+
48
+ # === Audio Channel Preferences ===
49
+ # Example: Prioritize audio tracks with more channels.
50
+ [audio_channels]
51
+ 8 = 8 # 7.1 Surround
52
+ 7 = 7 # 6.1 Surround
53
+ 6 = 6 # 5.1 Surround
54
+ 5 = 5 # 5.0 Surround
55
+ 4 = 4 # 4.0 Surround / Quadraphonic
56
+ 3 = 3 # 2.1 / 3.0 Surround
57
+ 2 = 2 # Stereo
58
+ 1 = 1 # Mono
59
+
60
+ # === Audio Track Filters ===
61
+ # Looks at the track name to detect its purpose and assign priority.
62
+ # This is especially useful when language or codec alone isn't enough.
63
+ [audio_filters]
64
+ atmos = 5 # Dolby Atmos
65
+ commentar = -10000 # Commentary Track
66
+ descript = -10000 # Visually Impaired
67
+
68
+ # === Subtitle Language Preferences ===
69
+ # Example: Prioritize English subtitles with Japanese audio.
70
+ [subtitle_languages]
71
+ enm = 101 # English Modified (Anime-Specific)
72
+ eng = 100 # English
73
+ und = 0 # Undefined (Fallback)
74
+
75
+ # === Subtitle Codec Preferences ===
76
+ # Example: Prioritize subtitle tracks with higher stylability.
77
+ [subtitle_codecs]
78
+ "S_TEXT/ASS" = 30 # Stylized (Advanced SubStationAlpha)
79
+ "S_TEXT/SSA" = 30 # Legacy Stylized (SubStationAlpha)
80
+ "S_TEXT/UTF8" = 20 # Plain Text (SubRip/SRT)
81
+ "S_TEXT/WEBVTT" = 20 # Web-Based Video Text (Used in Streaming)
82
+ "S_HDMV/PGS" = 10 # Image-Based (Used in Blu-rays)
83
+ S_VOBSUB = 10 # Legacy Image-Based (Used in DVDs)
84
+
85
+ # === Subtitle Track Filters ===
86
+ # Looks at the track name to detect its purpose and assign priority.
87
+ # This is especially useful when language or codec alone isn't enough.
88
+ [subtitle_filters]
89
+ honorific = 5 # Dialogue + Honorifics
90
+ full = 3 # Dialogue + On-Screen Text
91
+ dialog = 2 # Spoken Content
92
+ official = 1 # Localized Subtitles
93
+ sign = -5 # On-Screen Text
94
+ song = -5 # Lyrics / Karaoke
95
+ commentar = -10000 # Commentary Track
96
+ sdh = -10000 # Deaf / Hard of Hearing
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 2200 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><path d="M75.42,345.612c1.626,-0.004 3.251,-0.01 4.877,-0.016c4.434,-0.014 8.868,-0.01 13.302,-0.003c4.795,0.005 9.59,-0.008 14.385,-0.018c9.381,-0.017 18.761,-0.018 28.142,-0.013c7.628,0.004 15.256,0.003 22.883,-0.003c1.087,-0.001 2.175,-0.001 3.295,-0.002c2.209,-0.002 4.419,-0.003 6.628,-0.005c20.699,-0.014 41.397,-0.008 62.096,0.003c18.917,0.01 37.833,-0.003 56.75,-0.027c19.447,-0.024 38.894,-0.034 58.341,-0.027c10.909,0.003 21.817,0.001 32.726,-0.016c9.286,-0.015 18.572,-0.015 27.858,0.002c4.733,0.008 9.466,0.011 14.199,-0.005c4.342,-0.014 8.683,-0.009 13.024,0.01c1.562,0.004 3.124,0.001 4.685,-0.01c17.016,-0.106 34.768,3.361 47.581,15.481c6.22,6.999 10.259,15.069 12.809,24.035c0.177,0.608 0.353,1.216 0.535,1.842c5.118,19.755 2.637,42.704 -6.98,60.576c-7.172,11.911 -19.063,18.805 -32.322,22.167c-7.881,1.765 -15.621,1.836 -23.646,1.803c-1.625,0.004 -3.25,0.01 -4.875,0.016c-4.432,0.014 -8.864,0.01 -13.296,0.003c-4.793,-0.005 -9.586,0.008 -14.379,0.018c-9.377,0.017 -18.754,0.018 -28.131,0.013c-7.625,-0.004 -15.251,-0.003 -22.876,0.003c-1.631,0.001 -1.631,0.001 -3.294,0.002c-2.209,0.002 -4.418,0.003 -6.626,0.005c-20.694,0.014 -41.388,0.008 -62.082,-0.003c-18.909,-0.01 -37.819,0.003 -56.728,0.027c-19.441,0.024 -38.882,0.034 -58.324,0.027c-10.905,-0.003 -21.809,-0.001 -32.714,0.016c-9.283,0.015 -18.567,0.015 -27.85,-0.002c-4.731,-0.008 -9.462,-0.011 -14.193,0.005c-4.341,0.014 -8.681,0.009 -13.022,-0.01c-1.56,-0.004 -3.121,-0.001 -4.681,0.01c-16.932,0.106 -33.955,-2.879 -46.893,-14.763c-12.565,-13.595 -16.21,-29.962 -16.059,-48.066c0.008,-1.27 0.015,-2.54 0.023,-3.849c0.28,-15.99 3.483,-31.048 14.661,-43.217c14.34,-13.254 31.254,-16.089 50.174,-16.009Z" style="fill:#171717;fill-rule:nonzero;"/><path d="M75.42,193.612c1.626,-0.004 3.251,-0.01 4.877,-0.016c4.434,-0.014 8.868,-0.01 13.302,-0.003c4.795,0.005 9.59,-0.008 14.385,-0.018c9.381,-0.017 18.761,-0.018 28.142,-0.013c7.628,0.004 15.256,0.003 22.883,-0.003c1.087,-0.001 2.175,-0.001 3.295,-0.002c2.209,-0.002 4.419,-0.003 6.628,-0.005c20.699,-0.014 41.397,-0.008 62.096,0.003c18.917,0.01 37.833,-0.003 56.75,-0.027c19.447,-0.024 38.894,-0.034 58.341,-0.027c10.909,0.003 21.817,0.001 32.726,-0.016c9.286,-0.015 18.572,-0.015 27.858,0.002c4.733,0.008 9.466,0.011 14.199,-0.005c4.342,-0.014 8.683,-0.009 13.024,0.01c1.562,0.004 3.124,0.001 4.685,-0.01c17.016,-0.106 34.768,3.361 47.581,15.481c6.22,6.999 10.259,15.069 12.809,24.035c0.177,0.608 0.353,1.216 0.535,1.842c5.118,19.755 2.637,42.704 -6.98,60.576c-7.172,11.911 -19.063,18.805 -32.322,22.167c-7.881,1.765 -15.621,1.836 -23.646,1.803c-1.625,0.004 -3.25,0.01 -4.875,0.016c-4.432,0.014 -8.864,0.01 -13.296,0.003c-4.793,-0.005 -9.586,0.008 -14.379,0.018c-9.377,0.017 -18.754,0.018 -28.131,0.013c-7.625,-0.004 -15.251,-0.003 -22.876,0.003c-1.631,0.001 -1.631,0.001 -3.294,0.002c-2.209,0.002 -4.418,0.003 -6.626,0.005c-20.694,0.014 -41.388,0.008 -62.082,-0.003c-18.909,-0.01 -37.819,0.003 -56.728,0.027c-19.441,0.024 -38.882,0.034 -58.324,0.027c-10.905,-0.003 -21.809,-0.001 -32.714,0.016c-9.283,0.015 -18.567,0.015 -27.85,-0.002c-4.731,-0.008 -9.462,-0.011 -14.193,0.005c-4.341,0.014 -8.681,0.009 -13.022,-0.01c-1.56,-0.004 -3.121,-0.001 -4.681,0.01c-16.932,0.106 -33.955,-2.879 -46.893,-14.763c-12.565,-13.595 -16.21,-29.962 -16.059,-48.066c0.008,-1.27 0.015,-2.54 0.023,-3.849c0.28,-15.99 3.483,-31.048 14.661,-43.217c14.34,-13.254 31.254,-16.089 50.174,-16.009Z" style="fill:#171717;fill-rule:nonzero;"/><path d="M75.42,41.612c1.626,-0.004 3.251,-0.01 4.877,-0.016c4.434,-0.014 8.868,-0.01 13.302,-0.003c4.795,0.005 9.59,-0.008 14.385,-0.018c9.381,-0.017 18.761,-0.018 28.142,-0.013c7.628,0.004 15.256,0.003 22.883,-0.003c1.087,-0.001 2.175,-0.001 3.295,-0.002c2.209,-0.002 4.419,-0.003 6.628,-0.005c20.699,-0.014 41.397,-0.008 62.096,0.003c18.917,0.01 37.833,-0.003 56.75,-0.027c19.447,-0.024 38.894,-0.034 58.341,-0.027c10.909,0.003 21.817,0.001 32.726,-0.016c9.286,-0.015 18.572,-0.015 27.858,0.002c4.733,0.008 9.466,0.011 14.199,-0.005c4.342,-0.014 8.683,-0.009 13.024,0.01c1.562,0.004 3.124,0.001 4.685,-0.01c17.016,-0.106 34.768,3.361 47.581,15.481c6.22,6.999 10.259,15.069 12.809,24.035c0.177,0.608 0.353,1.216 0.535,1.842c5.118,19.755 2.637,42.704 -6.98,60.576c-7.172,11.911 -19.063,18.805 -32.322,22.167c-7.881,1.765 -15.621,1.836 -23.646,1.803c-1.625,0.004 -3.25,0.01 -4.875,0.016c-4.432,0.014 -8.864,0.01 -13.296,0.003c-4.793,-0.005 -9.586,0.008 -14.379,0.018c-9.377,0.017 -18.754,0.018 -28.131,0.013c-7.625,-0.004 -15.251,-0.003 -22.876,0.003c-1.631,0.001 -1.631,0.001 -3.294,0.002c-2.209,0.002 -4.418,0.003 -6.626,0.005c-20.694,0.014 -41.388,0.008 -62.082,-0.003c-18.909,-0.01 -37.819,0.003 -56.728,0.027c-19.441,0.024 -38.882,0.034 -58.324,0.027c-10.905,-0.003 -21.809,-0.001 -32.714,0.016c-9.283,0.015 -18.567,0.015 -27.85,-0.002c-4.731,-0.008 -9.462,-0.011 -14.193,0.005c-4.341,0.014 -8.681,0.009 -13.022,-0.01c-1.56,-0.004 -3.121,-0.001 -4.681,0.01c-16.932,0.106 -33.955,-2.879 -46.893,-14.763c-12.565,-13.595 -16.21,-29.962 -16.059,-48.066c0.008,-1.27 0.015,-2.54 0.023,-3.849c0.28,-15.99 3.483,-31.048 14.661,-43.217c14.34,-13.254 31.254,-16.089 50.174,-16.009Z" style="fill:#171717;fill-rule:nonzero;"/><path d="M372.202,363.855c1.06,-0.005 1.06,-0.005 2.141,-0.01c2.327,-0.009 4.654,-0.011 6.982,-0.013c1.628,-0.003 3.256,-0.007 4.884,-0.01c3.412,-0.006 6.824,-0.008 10.236,-0.007c4.35,0 8.699,-0.014 13.048,-0.031c3.364,-0.011 6.728,-0.013 10.092,-0.013c1.602,-0.001 3.204,-0.006 4.807,-0.013c15.218,-0.067 29.964,0.829 41.566,11.836c10.217,12.034 10.997,26.686 10.286,41.701c-0.947,10.559 -5.239,20.169 -13.051,27.374c-9.429,7.684 -19.823,9.416 -31.686,9.509c-1.053,0.01 -1.053,0.01 -2.127,0.02c-2.296,0.02 -4.593,0.031 -6.889,0.041c-0.793,0.004 -1.586,0.008 -2.403,0.012c-4.197,0.021 -8.394,0.035 -12.591,0.045c-4.299,0.011 -8.597,0.045 -12.896,0.085c-3.338,0.026 -6.677,0.035 -10.015,0.038c-1.583,0.005 -3.166,0.016 -4.749,0.035c-14.638,0.162 -27.208,-2.082 -38.541,-11.938c-9.23,-9.44 -10.554,-22.919 -10.54,-35.378c0.155,-12.367 2.702,-22.642 10.993,-32.137c8.311,-8.017 19.165,-11.111 30.456,-11.145Z" style="fill:#e28316;fill-rule:nonzero;"/><path d="M372.202,59.855c1.06,-0.005 1.06,-0.005 2.141,-0.01c2.327,-0.009 4.654,-0.011 6.982,-0.013c1.628,-0.003 3.256,-0.007 4.884,-0.01c3.412,-0.006 6.824,-0.008 10.236,-0.007c4.35,0 8.699,-0.014 13.048,-0.031c3.364,-0.011 6.728,-0.013 10.092,-0.013c1.602,-0.001 3.204,-0.006 4.807,-0.013c15.218,-0.067 29.964,0.829 41.566,11.836c10.217,12.034 10.997,26.686 10.286,41.701c-0.947,10.559 -5.239,20.169 -13.051,27.374c-9.429,7.684 -19.823,9.416 -31.686,9.509c-1.053,0.01 -1.053,0.01 -2.127,0.02c-2.296,0.02 -4.593,0.031 -6.889,0.041c-0.793,0.004 -1.586,0.008 -2.403,0.012c-4.197,0.021 -8.394,0.035 -12.591,0.045c-4.299,0.011 -8.597,0.045 -12.896,0.085c-3.338,0.026 -6.677,0.035 -10.015,0.038c-1.583,0.005 -3.166,0.016 -4.749,0.035c-14.638,0.162 -27.208,-2.082 -38.541,-11.938c-9.23,-9.44 -10.554,-22.919 -10.54,-35.378c0.155,-12.367 2.702,-22.642 10.993,-32.137c8.311,-8.017 19.165,-11.111 30.456,-11.145Z" style="fill:#e28316;fill-rule:nonzero;"/><path d="M212.202,59.855c1.06,-0.005 1.06,-0.005 2.141,-0.01c2.327,-0.009 4.654,-0.011 6.982,-0.013c1.628,-0.003 3.256,-0.007 4.884,-0.01c3.412,-0.006 6.824,-0.008 10.236,-0.007c4.35,0 8.699,-0.014 13.048,-0.031c3.364,-0.011 6.728,-0.013 10.092,-0.013c1.602,-0.001 3.204,-0.006 4.807,-0.013c15.218,-0.067 29.964,0.829 41.566,11.836c10.217,12.034 10.997,26.686 10.286,41.701c-0.947,10.559 -5.239,20.169 -13.051,27.374c-9.429,7.684 -19.823,9.416 -31.686,9.509c-1.053,0.01 -1.053,0.01 -2.127,0.02c-2.296,0.02 -4.593,0.031 -6.889,0.041c-0.793,0.004 -1.586,0.008 -2.403,0.012c-4.197,0.021 -8.394,0.035 -12.591,0.045c-4.299,0.011 -8.597,0.045 -12.896,0.085c-3.338,0.026 -6.677,0.035 -10.015,0.038c-1.583,0.005 -3.166,0.016 -4.749,0.035c-14.638,0.162 -27.208,-2.082 -38.541,-11.938c-9.23,-9.44 -10.554,-22.919 -10.54,-35.378c0.155,-12.367 2.702,-22.642 10.993,-32.137c8.311,-8.017 19.165,-11.111 30.456,-11.145Z" style="fill:#e28316;fill-rule:nonzero;"/><path d="M75.42,345.612c1.626,-0.004 3.251,-0.01 4.877,-0.016c4.434,-0.014 8.868,-0.01 13.302,-0.003c4.795,0.005 9.59,-0.008 14.385,-0.018c9.381,-0.017 18.761,-0.018 28.142,-0.013c7.628,0.004 15.256,0.003 22.883,-0.003c1.087,-0.001 2.175,-0.001 3.295,-0.002c2.209,-0.002 4.419,-0.003 6.628,-0.005c20.699,-0.014 41.397,-0.008 62.096,0.003c18.917,0.01 37.833,-0.003 56.75,-0.027c19.447,-0.024 38.894,-0.034 58.341,-0.027c10.909,0.003 21.817,0.001 32.726,-0.016c9.286,-0.015 18.572,-0.015 27.858,0.002c4.733,0.008 9.466,0.011 14.199,-0.005c4.342,-0.014 8.683,-0.009 13.024,0.01c1.562,0.004 3.124,0.001 4.685,-0.01c17.016,-0.106 34.768,3.361 47.581,15.481c6.22,6.999 10.259,15.069 12.809,24.035c0.177,0.608 0.353,1.216 0.535,1.842c5.118,19.755 2.637,42.704 -6.98,60.576c-7.172,11.911 -19.063,18.805 -32.322,22.167c-7.881,1.765 -15.621,1.836 -23.646,1.803c-1.625,0.004 -3.25,0.01 -4.875,0.016c-4.432,0.014 -8.864,0.01 -13.296,0.003c-4.793,-0.005 -9.586,0.008 -14.379,0.018c-9.377,0.017 -18.754,0.018 -28.131,0.013c-7.625,-0.004 -15.251,-0.003 -22.876,0.003c-1.631,0.001 -1.631,0.001 -3.294,0.002c-2.209,0.002 -4.418,0.003 -6.626,0.005c-20.694,0.014 -41.388,0.008 -62.082,-0.003c-18.909,-0.01 -37.819,0.003 -56.728,0.027c-19.441,0.024 -38.882,0.034 -58.324,0.027c-10.905,-0.003 -21.809,-0.001 -32.714,0.016c-9.283,0.015 -18.567,0.015 -27.85,-0.002c-4.731,-0.008 -9.462,-0.011 -14.193,0.005c-4.341,0.014 -8.681,0.009 -13.022,-0.01c-1.56,-0.004 -3.121,-0.001 -4.681,0.01c-16.932,0.106 -33.955,-2.879 -46.893,-14.763c-12.565,-13.595 -16.21,-29.962 -16.059,-48.066c0.008,-1.27 0.015,-2.54 0.023,-3.849c0.28,-15.99 3.483,-31.048 14.661,-43.217c14.34,-13.254 31.254,-16.089 50.174,-16.009Zm-22.42,7.388c-1.279,0.302 -1.279,0.302 -2.584,0.611c-11.662,2.856 -20.833,9.946 -27.068,20.072c-10.099,18.593 -9.489,41.514 -3.723,61.441c4.101,11.483 11.7,19.431 22.313,25.062c8.753,4.119 17.179,5.935 26.885,5.941c0.653,0.002 1.305,0.004 1.977,0.005c2.178,0.005 4.355,0.002 6.533,-0c1.581,0.002 3.161,0.004 4.742,0.007c4.337,0.006 8.675,0.006 13.012,0.005c4.68,-0 9.361,0.005 14.041,0.01c9.168,0.008 18.336,0.011 27.505,0.012c7.454,0 14.909,0.003 22.363,0.006c21.142,0.009 42.285,0.013 63.427,0.013c1.709,-0 1.709,-0 3.453,-0c1.141,-0 2.282,-0 3.458,-0c18.485,-0 36.97,0.009 55.455,0.023c18.988,0.014 37.976,0.021 56.964,0.02c10.657,-0 21.314,0.002 31.971,0.013c9.075,0.009 18.151,0.011 27.226,0.004c4.627,-0.003 9.255,-0.003 13.882,0.005c4.243,0.008 8.486,0.006 12.728,-0.002c1.528,-0.002 3.057,0 4.585,0.006c18.311,0.063 35.66,-1.649 49.854,-14.255c12.243,-13.134 14.309,-29.893 14.152,-47.121c-0.532,-13.558 -3.428,-24.708 -11.152,-35.879c-0.835,-1.268 -0.835,-1.268 -1.688,-2.562c-10.639,-11.214 -25.574,-15.113 -40.638,-15.53c-4.077,-0.04 -8.152,-0.046 -12.229,-0.042c-1.58,-0.002 -3.161,-0.004 -4.741,-0.007c-4.327,-0.006 -8.654,-0.006 -12.981,-0.005c-4.673,0 -9.346,-0.005 -14.019,-0.01c-9.148,-0.008 -18.296,-0.011 -27.445,-0.012c-7.436,-0 -14.873,-0.003 -22.309,-0.006c-21.09,-0.009 -42.181,-0.013 -63.271,-0.013c-1.704,0 -1.704,0 -3.443,0c-1.707,0 -1.707,0 -3.448,0c-18.445,0 -36.89,-0.009 -55.335,-0.023c-18.946,-0.014 -37.892,-0.021 -56.838,-0.02c-10.634,0 -21.268,-0.002 -31.902,-0.013c-9.052,-0.009 -18.104,-0.011 -27.156,-0.004c-4.617,0.003 -9.234,0.003 -13.851,-0.005c-4.23,-0.008 -8.459,-0.006 -12.689,0.002c-1.527,0.002 -3.054,-0 -4.58,-0.006c-8.024,-0.027 -15.629,0.248 -23.436,2.255Z" style="fill:#3f3f3f;fill-rule:nonzero;"/><path d="M75.42,193.612c1.626,-0.004 3.251,-0.01 4.877,-0.016c4.434,-0.014 8.868,-0.01 13.302,-0.003c4.795,0.005 9.59,-0.008 14.385,-0.018c9.381,-0.017 18.761,-0.018 28.142,-0.013c7.628,0.004 15.256,0.003 22.883,-0.003c1.087,-0.001 2.175,-0.001 3.295,-0.002c2.209,-0.002 4.419,-0.003 6.628,-0.005c20.699,-0.014 41.397,-0.008 62.096,0.003c18.917,0.01 37.833,-0.003 56.75,-0.027c19.447,-0.024 38.894,-0.034 58.341,-0.027c10.909,0.003 21.817,0.001 32.726,-0.016c9.286,-0.015 18.572,-0.015 27.858,0.002c4.733,0.008 9.466,0.011 14.199,-0.005c4.342,-0.014 8.683,-0.009 13.024,0.01c1.562,0.004 3.124,0.001 4.685,-0.01c17.016,-0.106 34.768,3.361 47.581,15.481c6.22,6.999 10.259,15.069 12.809,24.035c0.177,0.608 0.353,1.216 0.535,1.842c5.118,19.755 2.637,42.704 -6.98,60.576c-7.172,11.911 -19.063,18.805 -32.322,22.167c-7.881,1.765 -15.621,1.836 -23.646,1.803c-1.625,0.004 -3.25,0.01 -4.875,0.016c-4.432,0.014 -8.864,0.01 -13.296,0.003c-4.793,-0.005 -9.586,0.008 -14.379,0.018c-9.377,0.017 -18.754,0.018 -28.131,0.013c-7.625,-0.004 -15.251,-0.003 -22.876,0.003c-1.631,0.001 -1.631,0.001 -3.294,0.002c-2.209,0.002 -4.418,0.003 -6.626,0.005c-20.694,0.014 -41.388,0.008 -62.082,-0.003c-18.909,-0.01 -37.819,0.003 -56.728,0.027c-19.441,0.024 -38.882,0.034 -58.324,0.027c-10.905,-0.003 -21.809,-0.001 -32.714,0.016c-9.283,0.015 -18.567,0.015 -27.85,-0.002c-4.731,-0.008 -9.462,-0.011 -14.193,0.005c-4.341,0.014 -8.681,0.009 -13.022,-0.01c-1.56,-0.004 -3.121,-0.001 -4.681,0.01c-16.932,0.106 -33.955,-2.879 -46.893,-14.763c-12.565,-13.595 -16.21,-29.962 -16.059,-48.066c0.008,-1.27 0.015,-2.54 0.023,-3.849c0.28,-15.99 3.483,-31.048 14.661,-43.217c14.34,-13.254 31.254,-16.089 50.174,-16.009Zm-22.42,7.388c-1.279,0.302 -1.279,0.302 -2.584,0.611c-11.662,2.856 -20.833,9.946 -27.068,20.072c-10.099,18.593 -9.489,41.514 -3.723,61.441c4.101,11.483 11.7,19.431 22.313,25.062c8.753,4.119 17.179,5.935 26.885,5.941c0.653,0.002 1.305,0.004 1.977,0.005c2.178,0.005 4.355,0.002 6.533,-0c1.581,0.002 3.161,0.004 4.742,0.007c4.337,0.006 8.675,0.006 13.012,0.005c4.68,-0 9.361,0.005 14.041,0.01c9.168,0.008 18.336,0.011 27.505,0.012c7.454,0 14.909,0.003 22.363,0.006c21.142,0.009 42.285,0.013 63.427,0.013c1.709,-0 1.709,-0 3.453,-0c1.141,-0 2.282,-0 3.458,-0c18.485,-0 36.97,0.009 55.455,0.023c18.988,0.014 37.976,0.021 56.964,0.02c10.657,-0 21.314,0.002 31.971,0.013c9.075,0.009 18.151,0.011 27.226,0.004c4.627,-0.003 9.255,-0.003 13.882,0.005c4.243,0.008 8.486,0.006 12.728,-0.002c1.528,-0.002 3.057,0 4.585,0.006c18.311,0.063 35.66,-1.649 49.854,-14.255c12.243,-13.134 14.309,-29.893 14.152,-47.121c-0.532,-13.558 -3.428,-24.708 -11.152,-35.879c-0.835,-1.268 -0.835,-1.268 -1.688,-2.562c-10.639,-11.214 -25.574,-15.113 -40.638,-15.53c-4.077,-0.04 -8.152,-0.046 -12.229,-0.042c-1.58,-0.002 -3.161,-0.004 -4.741,-0.007c-4.327,-0.006 -8.654,-0.006 -12.981,-0.005c-4.673,0 -9.346,-0.005 -14.019,-0.01c-9.148,-0.008 -18.296,-0.011 -27.445,-0.012c-7.436,-0 -14.873,-0.003 -22.309,-0.006c-21.09,-0.009 -42.181,-0.013 -63.271,-0.013c-1.704,0 -1.704,0 -3.443,0c-1.707,0 -1.707,0 -3.448,0c-18.445,0 -36.89,-0.009 -55.335,-0.023c-18.946,-0.014 -37.892,-0.021 -56.838,-0.02c-10.634,0 -21.268,-0.002 -31.902,-0.013c-9.052,-0.009 -18.104,-0.011 -27.156,-0.004c-4.617,0.003 -9.234,0.003 -13.851,-0.005c-4.23,-0.008 -8.459,-0.006 -12.689,0.002c-1.527,0.002 -3.054,-0 -4.58,-0.006c-8.024,-0.027 -15.629,0.248 -23.436,2.255Z" style="fill:#3f3f3f;fill-rule:nonzero;"/><path d="M75.42,41.612c1.626,-0.004 3.251,-0.01 4.877,-0.016c4.434,-0.014 8.868,-0.01 13.302,-0.003c4.795,0.005 9.59,-0.008 14.385,-0.018c9.381,-0.017 18.761,-0.018 28.142,-0.013c7.628,0.004 15.256,0.003 22.883,-0.003c1.087,-0.001 2.175,-0.001 3.295,-0.002c2.209,-0.002 4.419,-0.003 6.628,-0.005c20.699,-0.014 41.397,-0.008 62.096,0.003c18.917,0.01 37.833,-0.003 56.75,-0.027c19.447,-0.024 38.894,-0.034 58.341,-0.027c10.909,0.003 21.817,0.001 32.726,-0.016c9.286,-0.015 18.572,-0.015 27.858,0.002c4.733,0.008 9.466,0.011 14.199,-0.005c4.342,-0.014 8.683,-0.009 13.024,0.01c1.562,0.004 3.124,0.001 4.685,-0.01c17.016,-0.106 34.768,3.361 47.581,15.481c6.22,6.999 10.259,15.069 12.809,24.035c0.177,0.608 0.353,1.216 0.535,1.842c5.118,19.755 2.637,42.704 -6.98,60.576c-7.172,11.911 -19.063,18.805 -32.322,22.167c-7.881,1.765 -15.621,1.836 -23.646,1.803c-1.625,0.004 -3.25,0.01 -4.875,0.016c-4.432,0.014 -8.864,0.01 -13.296,0.003c-4.793,-0.005 -9.586,0.008 -14.379,0.018c-9.377,0.017 -18.754,0.018 -28.131,0.013c-7.625,-0.004 -15.251,-0.003 -22.876,0.003c-1.631,0.001 -1.631,0.001 -3.294,0.002c-2.209,0.002 -4.418,0.003 -6.626,0.005c-20.694,0.014 -41.388,0.008 -62.082,-0.003c-18.909,-0.01 -37.819,0.003 -56.728,0.027c-19.441,0.024 -38.882,0.034 -58.324,0.027c-10.905,-0.003 -21.809,-0.001 -32.714,0.016c-9.283,0.015 -18.567,0.015 -27.85,-0.002c-4.731,-0.008 -9.462,-0.011 -14.193,0.005c-4.341,0.014 -8.681,0.009 -13.022,-0.01c-1.56,-0.004 -3.121,-0.001 -4.681,0.01c-16.932,0.106 -33.955,-2.879 -46.893,-14.763c-12.565,-13.595 -16.21,-29.962 -16.059,-48.066c0.008,-1.27 0.015,-2.54 0.023,-3.849c0.28,-15.99 3.483,-31.048 14.661,-43.217c14.34,-13.254 31.254,-16.089 50.174,-16.009Zm-22.42,7.388c-1.279,0.302 -1.279,0.302 -2.584,0.611c-11.662,2.856 -20.833,9.946 -27.068,20.072c-10.099,18.593 -9.489,41.514 -3.723,61.441c4.101,11.483 11.7,19.431 22.313,25.062c8.753,4.119 17.179,5.935 26.885,5.941c0.653,0.002 1.305,0.004 1.977,0.005c2.178,0.005 4.355,0.002 6.533,-0c1.581,0.002 3.161,0.004 4.742,0.007c4.337,0.006 8.675,0.006 13.012,0.005c4.68,-0 9.361,0.005 14.041,0.01c9.168,0.008 18.336,0.011 27.505,0.012c7.454,0 14.909,0.003 22.363,0.006c21.142,0.009 42.285,0.013 63.427,0.013c1.709,-0 1.709,-0 3.453,-0c1.141,-0 2.282,-0 3.458,-0c18.485,-0 36.97,0.009 55.455,0.023c18.988,0.014 37.976,0.021 56.964,0.02c10.657,-0 21.314,0.002 31.971,0.013c9.075,0.009 18.151,0.011 27.226,0.004c4.627,-0.003 9.255,-0.003 13.882,0.005c4.243,0.008 8.486,0.006 12.728,-0.002c1.528,-0.002 3.057,0 4.585,0.006c18.311,0.063 35.66,-1.649 49.854,-14.255c12.243,-13.134 14.309,-29.893 14.152,-47.121c-0.532,-13.558 -3.428,-24.708 -11.152,-35.879c-0.835,-1.268 -0.835,-1.268 -1.688,-2.562c-10.639,-11.214 -25.574,-15.113 -40.638,-15.53c-4.077,-0.04 -8.152,-0.046 -12.229,-0.042c-1.58,-0.002 -3.161,-0.004 -4.741,-0.007c-4.327,-0.006 -8.654,-0.006 -12.981,-0.005c-4.673,0 -9.346,-0.005 -14.019,-0.01c-9.148,-0.008 -18.296,-0.011 -27.445,-0.012c-7.436,-0 -14.873,-0.003 -22.309,-0.006c-21.09,-0.009 -42.181,-0.013 -63.271,-0.013c-1.704,0 -1.704,0 -3.443,0c-1.707,0 -1.707,0 -3.448,0c-18.445,0 -36.89,-0.009 -55.335,-0.023c-18.946,-0.014 -37.892,-0.021 -56.838,-0.02c-10.634,0 -21.268,-0.002 -31.902,-0.013c-9.052,-0.009 -18.104,-0.011 -27.156,-0.004c-4.617,0.003 -9.234,0.003 -13.851,-0.005c-4.23,-0.008 -8.459,-0.006 -12.689,0.002c-1.527,0.002 -3.054,-0 -4.58,-0.006c-8.024,-0.027 -15.629,0.248 -23.436,2.255Z" style="fill:#3f3f3f;fill-rule:nonzero;"/><g transform="matrix(300,0,0,300,2121.403702,313.710775)"></g><text x="574.236px" y="313.711px" style="font-family:'TrebuchetMS', 'Trebuchet MS', sans-serif;font-size:300px;fill:#c9c9c9;">MKVP<tspan x="1289.226px 1405.828px " y="313.711px 313.711px ">ri</tspan>ority</text><g transform="matrix(91.666667,0,0,91.666667,1958.494767,399.62793)"></g><text x="741.047px" y="399.628px" style="font-family:'TrebuchetMS', 'Trebuchet MS', sans-serif;font-size:91.667px;fill:#474747;">Audio/Subtitle P<tspan x="1415.209px 1450.837px " y="399.628px 399.628px ">ri</tspan>ority Scores</text></svg>