Deployed a4ce70a with MkDocs version: 1.6.1

This commit is contained in:
2026-10-15 18:27:55 +00:00
parent a6a368ae9b
commit 224daee8f3
11 changed files with 133 additions and 67 deletions
+1 -1
View File
@@ -3146,7 +3146,7 @@
<tr>
<td><code>--exact-lang</code></td>
<td>off</td>
<td>Exact matching only: <code>-l es-419</code> matches <code>es-419</code>, not <code>es-ES</code>. Applies to selection and to sort order.</td>
<td>A tag without a region selects only the variant it means and never falls back to another: <code>-l es</code> does not select <code>es-419</code>. A tag with a region, such as <code>es-419</code>, is always exact. Applies to selection and to sort order.</td>
</tr>
<tr>
<td><code>--sub-format</code></td>
+20 -6
View File
@@ -3471,9 +3471,9 @@ only exclusions adds them to the ones from <code>-l</code>.</p>
<ul>
<li><code>orig</code> becomes the title's own original language, so <code>-sl -orig</code> drops the
subtitles in that language.</li>
<li><code>--exact-lang</code> applies to exclusions with the same matching rules as selection:
<code>-es</code> removes exactly the tracks that <code>es</code> would select. Without it, <code>-es</code> also
removes <code>es-419</code> and <code>es-ES</code>.</li>
<li>An exclusion without a region removes every regional form: <code>-es</code> removes <code>es-419</code>
and <code>es-ES</code>. An exclusion with a region removes only that variant: <code>-es-419</code> removes
only <code>es-419</code>. With <code>--exact-lang</code>, <code>-es</code> removes only the variant <code>es</code> means.</li>
<li>Tracks with no language tag are never excluded.</li>
<li>unshackle rejects <code>-all</code>. Name the languages you do not want instead.</li>
<li>The comma form is the documented style. <code>-sl -es</code> also works, but a shell can read
@@ -3495,9 +3495,23 @@ works the same way, but the languages you leave out keep their bitrate and codec
alphabetical one.</p>
<p>See <a href="../../reference/configuration/download/#subtitle"><code>subtitle.language_priority</code></a> for the details.</p>
<h3 id="exact-vs-fuzzy-matching">Exact vs fuzzy matching<a class="headerlink" href="#exact-vs-fuzzy-matching" title="Permanent link">&para;</a></h3>
<p>By default language matching is fuzzy: <code>-l en</code> also accepts <code>en-US</code>, <code>en-GB</code>, and the
other regional forms (up to a small distance). Pass <code>--exact-lang</code> when only an exact
match is acceptable: with it, <code>-l es-419</code> selects only <code>es-419</code>, not <code>es-ES</code>.</p>
<p>A tag without a region asks for the variant it means: <code>pt</code> is Brazilian Portuguese, <code>es</code> is
Spanish from Spain, and <code>en</code> is US English. With <code>pt-PT</code> and <code>pt-BR</code> tracks, <code>-l pt</code>
selects <code>pt-BR</code>. If the title has no such variant, the tag takes every regional form, so
<code>-l es</code> on a title with only <code>es-419</code> selects <code>es-419</code>.</p>
<p>A tag with a region asks for that variant only: <code>-l es-419</code> selects <code>es-419</code>, never <code>es-ES</code>
or <code>es-MX</code>. If the service has no <code>es-419</code> track, unshackle reports <code>es-419 not found</code> and
stops. With <code>--best-available</code>, it continues with the other languages.</p>
<p>A track without a region matches only the region its language implies. <code>en</code> is US English
and <code>pt</code> is Brazilian Portuguese, so <code>-l en-US</code> accepts a track tagged <code>en</code>, but <code>-l en-GB</code>
and <code>-l pt-PT</code> do not accept <code>en</code> or <code>pt</code>. To take any English track, write <code>en</code>.</p>
<p><code>--exact-lang</code> turns off that fallback: a tag without a region then selects only the
variant it means, so <code>-l es</code> does not select <code>es-419</code>.</p>
<p><code>orig</code> is the title language that the service gives. It selects that exact variant first,
so a <code>fr-CA</code> title takes <code>fr-CA</code> audio over <code>fr-FR</code>. When the title has no track in that
variant, <code>orig</code> takes the closest regional form, unless you pass <code>--exact-lang</code>.</p>
<p>An exclusion without a region removes every regional form: <code>-es</code> drops <code>es-ES</code> and <code>es-419</code>.
See the <a href="#excluding-languages">exclusion rules</a> for <code>--exact-lang</code>.</p>
<div class="admonition tip">
<p class="admonition-title">The <code>all</code> and <code>best</code> tokens</p>
<p>For audio, the tokens <code>all</code> and <code>best</code> bypass the usual one-track-per-language pick
+1 -1
View File
@@ -2772,7 +2772,7 @@ For an episode with no on-screen name, <code>{episode_name?}</code> and its adja
</table>
<div class="admonition note">
<p class="admonition-title">How <code>language_tags</code> rules match</p>
<p>unshackle tries the rules in order, but language comparison is <strong>fuzzy</strong>: a rule condition of <code>en</code> matches <code>en-US</code>, <code>en-GB</code>, and any other <code>en-*</code> form. Within a single rule, <strong>all</strong> conditions must match (AND logic) for it to apply. The first rule that fully matches wins. If none match, unshackle removes <code>{lang_tag?}</code> from the filename cleanly.</p>
<p>unshackle tries the rules in order, and they compare languages with the same <a href="../downloading/#exact-vs-fuzzy-matching">matching rules</a> as <code>-l</code>: a rule condition of <code>en</code> matches <code>en-US</code>, <code>en-GB</code>, and any other <code>en-*</code> form, but <code>es-419</code> matches only <code>es-419</code>. Within a single rule, <strong>all</strong> conditions must match (AND logic) for it to apply. The first rule that fully matches wins. If none match, unshackle removes <code>{lang_tag?}</code> from the filename cleanly.</p>
</div>
<h3 id="episode-specific">Episode-specific<a class="headerlink" href="#episode-specific" title="Permanent link">&para;</a></h3>
<table>
+13 -11
View File
@@ -2597,7 +2597,7 @@ format-appropriate clean-up to make a single, valid file:</p>
</tr>
<tr>
<td><code>--exact-lang</code></td>
<td>Exact language matching, with no regional variants.</td>
<td>A tag without a region never falls back to another variant: <code>es</code> does not match <code>es-419</code>.</td>
</tr>
<tr>
<td><code>-S</code>, <code>--subs-only</code></td>
@@ -2622,13 +2622,14 @@ format-appropriate clean-up to make a single, valid file:</p>
To narrow it down, pass a comma-separated list of language tags:</p>
<div class="language-shell highlight"><span class="filename">English and Spanish subtitles only</span><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>unshackle<span class="w"> </span>dl<span class="w"> </span>--s-lang<span class="w"> </span>en,es<span class="w"> </span>EXAMPLE<span class="w"> </span><span class="m">81234567</span>
</span></code></pre></div>
<p>Language matching is fuzzy by default: <code>en</code> matches <code>en-US</code>, <code>en-GB</code>, and similar
variants. If a requested language is missing but others were found, unshackle continues
with whatever remains and tells you which languages it dropped.</p>
<p>For strict matching, where <code>es-419</code> matches only <code>es-419</code> and never <code>es-ES</code>, add
<code>--exact-lang</code>:</p>
<div class="language-shell highlight"><span class="filename">Only Latin-American Spanish, no other Spanish variants</span><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>unshackle<span class="w"> </span>dl<span class="w"> </span>--s-lang<span class="w"> </span>es-419<span class="w"> </span>--exact-lang<span class="w"> </span>EXAMPLE<span class="w"> </span><span class="s1">'https://www.example.com/...'</span>
<p>A tag without a region selects the variant it means, such as <code>en-US</code> for <code>en</code>, and every
regional form only when the title has no such variant. A tag with a region matches only
that variant:</p>
<div class="language-shell highlight"><span class="filename">Only Latin-American Spanish, no other Spanish variants</span><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>unshackle<span class="w"> </span>dl<span class="w"> </span>--s-lang<span class="w"> </span>es-419<span class="w"> </span>EXAMPLE<span class="w"> </span><span class="s1">'https://www.example.com/...'</span>
</span></code></pre></div>
<p>If a requested language is missing, unshackle stops with an error. With <code>--best-available</code>,
it continues with the languages it found and tells you which ones it dropped. See
<a href="../downloading/#exact-vs-fuzzy-matching">exact vs fuzzy matching</a> for the full rules.</p>
<h3 id="requiring-languages-before-downloading">Requiring languages before downloading<a class="headerlink" href="#requiring-languages-before-downloading" title="Permanent link">&para;</a></h3>
<p><code>--require-subs</code> is a gate rather than a filter. It downloads <strong>all</strong> available
subtitles, but only if every language you name is present. If any is missing, the title
@@ -2699,10 +2700,11 @@ CCExtractor tool on your <code>PATH</code>.</p>
can make a clean non-SDH version for you by stripping the hearing-impaired cues:
sound effects, speaker labels, music notes, and similar. This is on by default and
controlled by the <a href="#subtitle-configuration"><code>strip_sdh</code></a> config key.</p>
<p>The check is deliberately loose: if a close-enough plain track already exists (for
example an <code>en-GB</code> non-SDH track when the SDH track is <code>en-US</code>), no stripped copy is
created. When a stripped copy <em>is</em> created, the original SDH track is kept as well, so
you end up with both.</p>
<p>The check uses the same <a href="../downloading/#exact-vs-fuzzy-matching">matching rules</a> as
<code>--s-lang</code>. A plain track covers an SDH track only when it is the same variant: <code>en</code> and
<code>en-US</code> cover each other, but a plain <code>en-GB</code> track does not stop a stripped <code>en</code> or <code>en-US</code>
copy. When unshackle creates a stripped
copy, it keeps the original SDH track as well, so you end up with both.</p>
<p>The <a href="#subtitle-configuration"><code>sdh_method</code></a> config key selects the stripping engine
itself. The default (<code>auto</code>) prefers the <code>subby</code> cleaner for SRT, falls back to
SubtitleEdit when you install it, and otherwise uses the built-in <code>filter-subs</code>