mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2026-11-12 12:05:07 +00:00
Deployed 84fd0a4 with MkDocs version: 1.6.1
This commit is contained in:
@@ -2884,6 +2884,27 @@ merge) and <code>--best-available</code> skip-on-error handling:</p>
|
||||
</span><span id="__span-17-4"><a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">fetch_dash_manifest</span><span class="p">(</span><span class="n">title</span><span class="p">,</span> <span class="n">vcodec</span><span class="o">=</span><span class="n">vcodec</span><span class="p">,</span> <span class="n">range_</span><span class="o">=</span><span class="n">range_</span><span class="p">)</span>
|
||||
</span><span id="__span-17-5"><a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_tracks_for_variants</span><span class="p">(</span><span class="n">title</span><span class="p">,</span> <span class="n">fetch_variant</span><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">What the helper merges</p>
|
||||
<p>The helper adds the video, audio and subtitle tracks of every manifest.
|
||||
From a later manifest, it skips a track that has the ID of a held track. It
|
||||
also skips a track whose <code>Tracks.signature</code> matches a held track, because
|
||||
the same track can have a different ID in each manifest. Chapters and
|
||||
attachments come from the first manifest only.</p>
|
||||
<ul>
|
||||
<li><code>signature</code> holds the attributes that the track list and selection
|
||||
read: codec, range, resolution, frame rate, bitrate and name for video;
|
||||
language, codec, channels, JOC, descriptive, bitrate and name for audio;
|
||||
language, codec, flags and name for subtitles.</li>
|
||||
<li>The helper does not remove copies inside one manifest. To remove them,
|
||||
call <code>tracks.dedupe()</code>. Two tracks that differ only in a value outside
|
||||
the signature, such as a dialogue-boost mix, become one track, so remove the
|
||||
track you do not want before you call it.</li>
|
||||
<li>The audio that <code>dl</code> selects can come from a different manifest than the
|
||||
video. Keep licence data on each track (<code>track.data</code>), not in one value
|
||||
per title that the next fetch overwrites.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<p>After parsing, you may <strong>correct</strong> track metadata the manifest gets wrong:
|
||||
stamp the real <code>video.range</code>, fix odd audio channel counts, mark descriptive
|
||||
audio, add hand-built subtitles or an <code>Attachment</code> (e.g. cover art). Do <em>not</em>
|
||||
@@ -3009,7 +3030,7 @@ flagged, banned, or downgraded.</p>
|
||||
<code>get_clearkey_license</code> to do the POST yourself.</li>
|
||||
<li><strong>Keys arrive obfuscated or through a bespoke channel</strong>: fetch and unwrap
|
||||
the content key in <code>get_tracks</code> and pre-populate
|
||||
<code>drm.content_keys[kid] = key_hex</code> on the track's <code>ClearKeyCENC</code>. The
|
||||
<code>drm.signatures[kid] = key_hex</code> on the track's <code>ClearKeyCENC</code>. The
|
||||
non-obvious payoff: when every KID is already keyed, the framework skips
|
||||
the license round-trip entirely.</li>
|
||||
</ol>
|
||||
|
||||
BIN
Binary file not shown.
+478
-472
File diff suppressed because it is too large
Load Diff
@@ -2837,6 +2837,28 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#unshackle.core.tracks.Tracks.signature" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
<code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> signature
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#unshackle.core.tracks.Tracks.dedupe" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
<code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> dedupe
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -4200,6 +4222,28 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#unshackle.core.tracks.Tracks.signature" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
<code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> signature
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#unshackle.core.tracks.Tracks.dedupe" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
<code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> dedupe
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -7943,6 +7987,50 @@ set, this method skips such a track and logs how many it skipped.</p>
|
||||
<div class="doc doc-object doc-function">
|
||||
|
||||
|
||||
<h3 id="unshackle.core.tracks.Tracks.signature" class="doc doc-heading">
|
||||
<code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">signature</span>
|
||||
|
||||
|
||||
<span class="doc doc-labels">
|
||||
<small class="doc doc-label doc-label-staticmethod"><code>staticmethod</code></small>
|
||||
</span>
|
||||
|
||||
<a href="#unshackle.core.tracks.Tracks.signature" class="headerlink" title="Permanent link">¶</a></h3>
|
||||
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">signature</span><span class="p">(</span><span class="n">track</span><span class="p">)</span>
|
||||
</span></code></pre></div>
|
||||
|
||||
<div class="doc doc-contents ">
|
||||
|
||||
<p>The attributes that listing and selection read. Two tracks with one signature look and select the same.</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="doc doc-object doc-function">
|
||||
|
||||
|
||||
<h3 id="unshackle.core.tracks.Tracks.dedupe" class="doc doc-heading">
|
||||
<code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">dedupe</span>
|
||||
|
||||
|
||||
<a href="#unshackle.core.tracks.Tracks.dedupe" class="headerlink" title="Permanent link">¶</a></h3>
|
||||
<div class="language-python doc-signature highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">dedupe</span><span class="p">()</span>
|
||||
</span></code></pre></div>
|
||||
|
||||
<div class="doc doc-contents ">
|
||||
|
||||
<p>Drop each video, audio or subtitle track whose signature matches an earlier track.</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="doc doc-object doc-function">
|
||||
|
||||
|
||||
<h3 id="unshackle.core.tracks.Tracks.sort_videos" class="doc doc-heading">
|
||||
<code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">sort_videos</span>
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user