mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2026-11-14 13:05:09 +00:00
Deployed 5ffa9a4 with MkDocs version: 1.6.1
This commit is contained in:
+357
-355
@@ -3547,7 +3547,8 @@ from config, cookies, retry handler, and a proxy if available.
|
||||
<span class="normal"><a href="#__codelineno-0-438">438</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-439">439</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-440">440</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-441">441</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-409"><a id="__codelineno-0-409" name="__codelineno-0-409"></a><span class="nd">@staticmethod</span>
|
||||
<span class="normal"><a href="#__codelineno-0-441">441</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-442">442</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-409"><a id="__codelineno-0-409" name="__codelineno-0-409"></a><span class="nd">@staticmethod</span>
|
||||
</span><span id="__span-0-410"><a id="__codelineno-0-410" name="__codelineno-0-410"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_session</span><span class="p">()</span> <span class="o">-></span> <span class="n">requests</span><span class="o">.</span><span class="n">Session</span><span class="p">:</span>
|
||||
</span><span id="__span-0-411"><a id="__codelineno-0-411" name="__codelineno-0-411"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-412"><a id="__codelineno-0-412" name="__codelineno-0-412"></a><span class="sd"> Creates a Python-requests HTTP session, adds common headers</span>
|
||||
@@ -3572,14 +3573,15 @@ from config, cookies, retry handler, and a proxy if available.
|
||||
</span><span id="__span-0-431"><a id="__codelineno-0-431" name="__codelineno-0-431"></a> <span class="n">status_forcelist</span><span class="o">=</span><span class="n">STATUS_FORCELIST</span><span class="p">,</span>
|
||||
</span><span id="__span-0-432"><a id="__codelineno-0-432" name="__codelineno-0-432"></a> <span class="n">allowed_methods</span><span class="o">=</span><span class="n">RETRY_METHODS</span><span class="p">,</span>
|
||||
</span><span id="__span-0-433"><a id="__codelineno-0-433" name="__codelineno-0-433"></a> <span class="n">respect_retry_after_header</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="__span-0-434"><a id="__codelineno-0-434" name="__codelineno-0-434"></a> <span class="p">),</span>
|
||||
</span><span id="__span-0-435"><a id="__codelineno-0-435" name="__codelineno-0-435"></a> <span class="n">pool_connections</span><span class="o">=</span><span class="n">POOL_MAX_SIZE</span><span class="p">,</span>
|
||||
</span><span id="__span-0-436"><a id="__codelineno-0-436" name="__codelineno-0-436"></a> <span class="n">pool_maxsize</span><span class="o">=</span><span class="n">POOL_MAX_SIZE</span><span class="p">,</span>
|
||||
</span><span id="__span-0-437"><a id="__codelineno-0-437" name="__codelineno-0-437"></a> <span class="n">pool_block</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="__span-0-438"><a id="__codelineno-0-438" name="__codelineno-0-438"></a> <span class="p">),</span>
|
||||
</span><span id="__span-0-439"><a id="__codelineno-0-439" name="__codelineno-0-439"></a> <span class="p">)</span>
|
||||
</span><span id="__span-0-440"><a id="__codelineno-0-440" name="__codelineno-0-440"></a> <span class="n">session</span><span class="o">.</span><span class="n">mount</span><span class="p">(</span><span class="s2">"http://"</span><span class="p">,</span> <span class="n">session</span><span class="o">.</span><span class="n">adapters</span><span class="p">[</span><span class="s2">"https://"</span><span class="p">])</span>
|
||||
</span><span id="__span-0-441"><a id="__codelineno-0-441" name="__codelineno-0-441"></a> <span class="k">return</span> <span class="n">session</span>
|
||||
</span><span id="__span-0-434"><a id="__codelineno-0-434" name="__codelineno-0-434"></a> <span class="n">retry_after_max</span><span class="o">=</span><span class="n">MAX_BACKOFF</span><span class="p">,</span>
|
||||
</span><span id="__span-0-435"><a id="__codelineno-0-435" name="__codelineno-0-435"></a> <span class="p">),</span>
|
||||
</span><span id="__span-0-436"><a id="__codelineno-0-436" name="__codelineno-0-436"></a> <span class="n">pool_connections</span><span class="o">=</span><span class="n">POOL_MAX_SIZE</span><span class="p">,</span>
|
||||
</span><span id="__span-0-437"><a id="__codelineno-0-437" name="__codelineno-0-437"></a> <span class="n">pool_maxsize</span><span class="o">=</span><span class="n">POOL_MAX_SIZE</span><span class="p">,</span>
|
||||
</span><span id="__span-0-438"><a id="__codelineno-0-438" name="__codelineno-0-438"></a> <span class="n">pool_block</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="__span-0-439"><a id="__codelineno-0-439" name="__codelineno-0-439"></a> <span class="p">),</span>
|
||||
</span><span id="__span-0-440"><a id="__codelineno-0-440" name="__codelineno-0-440"></a> <span class="p">)</span>
|
||||
</span><span id="__span-0-441"><a id="__codelineno-0-441" name="__codelineno-0-441"></a> <span class="n">session</span><span class="o">.</span><span class="n">mount</span><span class="p">(</span><span class="s2">"http://"</span><span class="p">,</span> <span class="n">session</span><span class="o">.</span><span class="n">adapters</span><span class="p">[</span><span class="s2">"https://"</span><span class="p">])</span>
|
||||
</span><span id="__span-0-442"><a id="__codelineno-0-442" name="__codelineno-0-442"></a> <span class="k">return</span> <span class="n">session</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -3609,19 +3611,19 @@ from config, cookies, retry handler, and a proxy if available.
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>unshackle/core/service.py</code></summary>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-443">443</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-444">444</a></span>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-444">444</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-445">445</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-446">446</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-447">447</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-448">448</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-449">449</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-443"><a id="__codelineno-0-443" name="__codelineno-0-443"></a><span class="nd">@staticmethod</span>
|
||||
</span><span id="__span-0-444"><a id="__codelineno-0-444" name="__codelineno-0-444"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_binaries</span><span class="p">()</span> <span class="o">-></span> <span class="nb">list</span><span class="p">[</span><span class="nb">dict</span><span class="p">]:</span>
|
||||
</span><span id="__span-0-445"><a id="__codelineno-0-445" name="__codelineno-0-445"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-446"><a id="__codelineno-0-446" name="__codelineno-0-446"></a><span class="sd"> Declare custom binary dependencies required by this service.</span>
|
||||
</span><span id="__span-0-447"><a id="__codelineno-0-447" name="__codelineno-0-447"></a><span class="sd"> :returns: List of dicts, each with a ``name`` and optional ``candidates`` and ``desc``.</span>
|
||||
</span><span id="__span-0-448"><a id="__codelineno-0-448" name="__codelineno-0-448"></a><span class="sd"> """</span>
|
||||
</span><span id="__span-0-449"><a id="__codelineno-0-449" name="__codelineno-0-449"></a> <span class="k">return</span> <span class="p">[]</span>
|
||||
<span class="normal"><a href="#__codelineno-0-449">449</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-450">450</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-444"><a id="__codelineno-0-444" name="__codelineno-0-444"></a><span class="nd">@staticmethod</span>
|
||||
</span><span id="__span-0-445"><a id="__codelineno-0-445" name="__codelineno-0-445"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_binaries</span><span class="p">()</span> <span class="o">-></span> <span class="nb">list</span><span class="p">[</span><span class="nb">dict</span><span class="p">]:</span>
|
||||
</span><span id="__span-0-446"><a id="__codelineno-0-446" name="__codelineno-0-446"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-447"><a id="__codelineno-0-447" name="__codelineno-0-447"></a><span class="sd"> Declare custom binary dependencies required by this service.</span>
|
||||
</span><span id="__span-0-448"><a id="__codelineno-0-448" name="__codelineno-0-448"></a><span class="sd"> :returns: List of dicts, each with a ``name`` and optional ``candidates`` and ``desc``.</span>
|
||||
</span><span id="__span-0-449"><a id="__codelineno-0-449" name="__codelineno-0-449"></a><span class="sd"> """</span>
|
||||
</span><span id="__span-0-450"><a id="__codelineno-0-450" name="__codelineno-0-450"></a> <span class="k">return</span> <span class="p">[]</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -3654,8 +3656,7 @@ the cookies into the service HTTP session.</p>
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>unshackle/core/service.py</code></summary>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-451">451</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-452">452</a></span>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-452">452</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-453">453</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-454">454</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-455">455</a></span>
|
||||
@@ -3675,28 +3676,29 @@ the cookies into the service HTTP session.</p>
|
||||
<span class="normal"><a href="#__codelineno-0-469">469</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-470">470</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-471">471</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-472">472</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-451"><a id="__codelineno-0-451" name="__codelineno-0-451"></a><span class="k">def</span><span class="w"> </span><span class="nf">authenticate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cookies</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">CookieJar</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">credential</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Credential</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-452"><a id="__codelineno-0-452" name="__codelineno-0-452"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-453"><a id="__codelineno-0-453" name="__codelineno-0-453"></a><span class="sd"> Authenticate the Service with Cookies and/or Credentials (Email/Username and Password).</span>
|
||||
</span><span id="__span-0-454"><a id="__codelineno-0-454" name="__codelineno-0-454"></a>
|
||||
</span><span id="__span-0-455"><a id="__codelineno-0-455" name="__codelineno-0-455"></a><span class="sd"> This is effectively a login() function. Any API calls or object initializations</span>
|
||||
</span><span id="__span-0-456"><a id="__codelineno-0-456" name="__codelineno-0-456"></a><span class="sd"> needing to be made, should be made here. unshackle operates this method before</span>
|
||||
</span><span id="__span-0-457"><a id="__codelineno-0-457" name="__codelineno-0-457"></a><span class="sd"> any of the following abstract functions. The one exception is a search on a</span>
|
||||
</span><span id="__span-0-458"><a id="__codelineno-0-458" name="__codelineno-0-458"></a><span class="sd"> Service that sets ``ANONYMOUS_SEARCH``, which does not operate this method.</span>
|
||||
</span><span id="__span-0-459"><a id="__codelineno-0-459" name="__codelineno-0-459"></a>
|
||||
</span><span id="__span-0-460"><a id="__codelineno-0-460" name="__codelineno-0-460"></a><span class="sd"> You should avoid storing or using the Credential outside this function.</span>
|
||||
</span><span id="__span-0-461"><a id="__codelineno-0-461" name="__codelineno-0-461"></a><span class="sd"> Make any calls you need for any Cookies, Tokens, or such, then use those.</span>
|
||||
</span><span id="__span-0-462"><a id="__codelineno-0-462" name="__codelineno-0-462"></a>
|
||||
</span><span id="__span-0-463"><a id="__codelineno-0-463" name="__codelineno-0-463"></a><span class="sd"> Do not store the cookies outside this function either. However, you can load</span>
|
||||
</span><span id="__span-0-464"><a id="__codelineno-0-464" name="__codelineno-0-464"></a><span class="sd"> the cookies into the service HTTP session.</span>
|
||||
</span><span id="__span-0-465"><a id="__codelineno-0-465" name="__codelineno-0-465"></a><span class="sd"> """</span>
|
||||
</span><span id="__span-0-466"><a id="__codelineno-0-466" name="__codelineno-0-466"></a> <span class="k">if</span> <span class="n">cookies</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-467"><a id="__codelineno-0-467" name="__codelineno-0-467"></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cookies</span><span class="p">,</span> <span class="n">CookieJar</span><span class="p">):</span>
|
||||
</span><span id="__span-0-468"><a id="__codelineno-0-468" name="__codelineno-0-468"></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected cookies to be a </span><span class="si">{</span><span class="n">CookieJar</span><span class="si">}</span><span class="s2">, not </span><span class="si">{</span><span class="n">cookies</span><span class="si">!r}</span><span class="s2">."</span><span class="p">)</span>
|
||||
</span><span id="__span-0-469"><a id="__codelineno-0-469" name="__codelineno-0-469"></a> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">cookies</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">cookies</span><span class="p">)</span>
|
||||
</span><span id="__span-0-470"><a id="__codelineno-0-470" name="__codelineno-0-470"></a>
|
||||
</span><span id="__span-0-471"><a id="__codelineno-0-471" name="__codelineno-0-471"></a> <span class="c1"># Store credential for cache key generation</span>
|
||||
</span><span id="__span-0-472"><a id="__codelineno-0-472" name="__codelineno-0-472"></a> <span class="bp">self</span><span class="o">.</span><span class="n">credential</span> <span class="o">=</span> <span class="n">credential</span>
|
||||
<span class="normal"><a href="#__codelineno-0-472">472</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-473">473</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-452"><a id="__codelineno-0-452" name="__codelineno-0-452"></a><span class="k">def</span><span class="w"> </span><span class="nf">authenticate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cookies</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">CookieJar</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">credential</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Credential</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-453"><a id="__codelineno-0-453" name="__codelineno-0-453"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-454"><a id="__codelineno-0-454" name="__codelineno-0-454"></a><span class="sd"> Authenticate the Service with Cookies and/or Credentials (Email/Username and Password).</span>
|
||||
</span><span id="__span-0-455"><a id="__codelineno-0-455" name="__codelineno-0-455"></a>
|
||||
</span><span id="__span-0-456"><a id="__codelineno-0-456" name="__codelineno-0-456"></a><span class="sd"> This is effectively a login() function. Any API calls or object initializations</span>
|
||||
</span><span id="__span-0-457"><a id="__codelineno-0-457" name="__codelineno-0-457"></a><span class="sd"> needing to be made, should be made here. unshackle operates this method before</span>
|
||||
</span><span id="__span-0-458"><a id="__codelineno-0-458" name="__codelineno-0-458"></a><span class="sd"> any of the following abstract functions. The one exception is a search on a</span>
|
||||
</span><span id="__span-0-459"><a id="__codelineno-0-459" name="__codelineno-0-459"></a><span class="sd"> Service that sets ``ANONYMOUS_SEARCH``, which does not operate this method.</span>
|
||||
</span><span id="__span-0-460"><a id="__codelineno-0-460" name="__codelineno-0-460"></a>
|
||||
</span><span id="__span-0-461"><a id="__codelineno-0-461" name="__codelineno-0-461"></a><span class="sd"> You should avoid storing or using the Credential outside this function.</span>
|
||||
</span><span id="__span-0-462"><a id="__codelineno-0-462" name="__codelineno-0-462"></a><span class="sd"> Make any calls you need for any Cookies, Tokens, or such, then use those.</span>
|
||||
</span><span id="__span-0-463"><a id="__codelineno-0-463" name="__codelineno-0-463"></a>
|
||||
</span><span id="__span-0-464"><a id="__codelineno-0-464" name="__codelineno-0-464"></a><span class="sd"> Do not store the cookies outside this function either. However, you can load</span>
|
||||
</span><span id="__span-0-465"><a id="__codelineno-0-465" name="__codelineno-0-465"></a><span class="sd"> the cookies into the service HTTP session.</span>
|
||||
</span><span id="__span-0-466"><a id="__codelineno-0-466" name="__codelineno-0-466"></a><span class="sd"> """</span>
|
||||
</span><span id="__span-0-467"><a id="__codelineno-0-467" name="__codelineno-0-467"></a> <span class="k">if</span> <span class="n">cookies</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-468"><a id="__codelineno-0-468" name="__codelineno-0-468"></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cookies</span><span class="p">,</span> <span class="n">CookieJar</span><span class="p">):</span>
|
||||
</span><span id="__span-0-469"><a id="__codelineno-0-469" name="__codelineno-0-469"></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected cookies to be a </span><span class="si">{</span><span class="n">CookieJar</span><span class="si">}</span><span class="s2">, not </span><span class="si">{</span><span class="n">cookies</span><span class="si">!r}</span><span class="s2">."</span><span class="p">)</span>
|
||||
</span><span id="__span-0-470"><a id="__codelineno-0-470" name="__codelineno-0-470"></a> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">cookies</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">cookies</span><span class="p">)</span>
|
||||
</span><span id="__span-0-471"><a id="__codelineno-0-471" name="__codelineno-0-471"></a>
|
||||
</span><span id="__span-0-472"><a id="__codelineno-0-472" name="__codelineno-0-472"></a> <span class="c1"># Store credential for cache key generation</span>
|
||||
</span><span id="__span-0-473"><a id="__codelineno-0-473" name="__codelineno-0-473"></a> <span class="bp">self</span><span class="o">.</span><span class="n">credential</span> <span class="o">=</span> <span class="n">credential</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -3724,8 +3726,7 @@ REST download job relays it through <code>prompt_user</code> to the job's <code>
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>unshackle/core/service.py</code></summary>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-474">474</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-475">475</a></span>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-475">475</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-476">476</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-477">477</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-478">478</a></span>
|
||||
@@ -3733,16 +3734,17 @@ REST download job relays it through <code>prompt_user</code> to the job's <code>
|
||||
<span class="normal"><a href="#__codelineno-0-480">480</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-481">481</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-482">482</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-483">483</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-474"><a id="__codelineno-0-474" name="__codelineno-0-474"></a><span class="k">def</span><span class="w"> </span><span class="nf">request_input</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prompt</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="__span-0-475"><a id="__codelineno-0-475" name="__codelineno-0-475"></a><span class="w"> </span><span class="sd">"""Request interactive input from the user.</span>
|
||||
</span><span id="__span-0-476"><a id="__codelineno-0-476" name="__codelineno-0-476"></a>
|
||||
</span><span id="__span-0-477"><a id="__codelineno-0-477" name="__codelineno-0-477"></a><span class="sd"> Locally, prompts through the shared rich console so the prompt renders alongside</span>
|
||||
</span><span id="__span-0-478"><a id="__codelineno-0-478" name="__codelineno-0-478"></a><span class="sd"> Live progress. A remote-dl session relays it through its :class:`InputBridge`, and a</span>
|
||||
</span><span id="__span-0-479"><a id="__codelineno-0-479" name="__codelineno-0-479"></a><span class="sd"> REST download job relays it through ``prompt_user`` to the job's ``input_prompt``.</span>
|
||||
</span><span id="__span-0-480"><a id="__codelineno-0-480" name="__codelineno-0-480"></a><span class="sd"> """</span>
|
||||
</span><span id="__span-0-481"><a id="__codelineno-0-481" name="__codelineno-0-481"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_input_bridge</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-482"><a id="__codelineno-0-482" name="__codelineno-0-482"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_input_bridge</span><span class="o">.</span><span class="n">request_input</span><span class="p">(</span><span class="n">prompt</span><span class="p">)</span>
|
||||
</span><span id="__span-0-483"><a id="__codelineno-0-483" name="__codelineno-0-483"></a> <span class="k">return</span> <span class="n">prompt_user</span><span class="p">(</span><span class="n">prompt</span><span class="p">)</span>
|
||||
<span class="normal"><a href="#__codelineno-0-483">483</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-484">484</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-475"><a id="__codelineno-0-475" name="__codelineno-0-475"></a><span class="k">def</span><span class="w"> </span><span class="nf">request_input</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prompt</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="__span-0-476"><a id="__codelineno-0-476" name="__codelineno-0-476"></a><span class="w"> </span><span class="sd">"""Request interactive input from the user.</span>
|
||||
</span><span id="__span-0-477"><a id="__codelineno-0-477" name="__codelineno-0-477"></a>
|
||||
</span><span id="__span-0-478"><a id="__codelineno-0-478" name="__codelineno-0-478"></a><span class="sd"> Locally, prompts through the shared rich console so the prompt renders alongside</span>
|
||||
</span><span id="__span-0-479"><a id="__codelineno-0-479" name="__codelineno-0-479"></a><span class="sd"> Live progress. A remote-dl session relays it through its :class:`InputBridge`, and a</span>
|
||||
</span><span id="__span-0-480"><a id="__codelineno-0-480" name="__codelineno-0-480"></a><span class="sd"> REST download job relays it through ``prompt_user`` to the job's ``input_prompt``.</span>
|
||||
</span><span id="__span-0-481"><a id="__codelineno-0-481" name="__codelineno-0-481"></a><span class="sd"> """</span>
|
||||
</span><span id="__span-0-482"><a id="__codelineno-0-482" name="__codelineno-0-482"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_input_bridge</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-483"><a id="__codelineno-0-483" name="__codelineno-0-483"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_input_bridge</span><span class="o">.</span><span class="n">request_input</span><span class="p">(</span><span class="n">prompt</span><span class="p">)</span>
|
||||
</span><span id="__span-0-484"><a id="__codelineno-0-484" name="__codelineno-0-484"></a> <span class="k">return</span> <span class="n">prompt_user</span><span class="p">(</span><span class="n">prompt</span><span class="p">)</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -3771,8 +3773,7 @@ remote session no longer exists. A REST download job shows <code>message</code>
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>unshackle/core/service.py</code></summary>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-485">485</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-486">486</a></span>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-486">486</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-487">487</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-488">488</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-489">489</a></span>
|
||||
@@ -3795,31 +3796,32 @@ remote session no longer exists. A REST download job shows <code>message</code>
|
||||
<span class="normal"><a href="#__codelineno-0-506">506</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-507">507</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-508">508</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-509">509</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-485"><a id="__codelineno-0-485" name="__codelineno-0-485"></a><span class="k">def</span><span class="w"> </span><span class="nf">wait_for_approval</span><span class="p">(</span>
|
||||
</span><span id="__span-0-486"><a id="__codelineno-0-486" name="__codelineno-0-486"></a> <span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">check</span><span class="p">:</span> <span class="n">Callable</span><span class="p">[[],</span> <span class="n">Optional</span><span class="p">[</span><span class="n">T</span><span class="p">]],</span> <span class="n">timeout</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">interval</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">3.0</span>
|
||||
</span><span id="__span-0-487"><a id="__codelineno-0-487" name="__codelineno-0-487"></a><span class="p">)</span> <span class="o">-></span> <span class="n">T</span><span class="p">:</span>
|
||||
</span><span id="__span-0-488"><a id="__codelineno-0-488" name="__codelineno-0-488"></a><span class="w"> </span><span class="sd">"""Show ``message``, then call ``check`` until it returns a value.</span>
|
||||
</span><span id="__span-0-489"><a id="__codelineno-0-489" name="__codelineno-0-489"></a>
|
||||
</span><span id="__span-0-490"><a id="__codelineno-0-490" name="__codelineno-0-490"></a><span class="sd"> Use it for a login that the user approves on another device, such as a pair code.</span>
|
||||
</span><span id="__span-0-491"><a id="__codelineno-0-491" name="__codelineno-0-491"></a><span class="sd"> ``check`` returns None while the approval is pending, and must return within a few</span>
|
||||
</span><span id="__span-0-492"><a id="__codelineno-0-492" name="__codelineno-0-492"></a><span class="sd"> seconds. Raises TimeoutError after ``timeout`` seconds, and RuntimeError when the</span>
|
||||
</span><span id="__span-0-493"><a id="__codelineno-0-493" name="__codelineno-0-493"></a><span class="sd"> remote session no longer exists. A REST download job shows ``message`` as its ``notice``.</span>
|
||||
</span><span id="__span-0-494"><a id="__codelineno-0-494" name="__codelineno-0-494"></a><span class="sd"> """</span>
|
||||
</span><span id="__span-0-495"><a id="__codelineno-0-495" name="__codelineno-0-495"></a> <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
||||
</span><span id="__span-0-496"><a id="__codelineno-0-496" name="__codelineno-0-496"></a> <span class="n">show_notice</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
||||
</span><span id="__span-0-497"><a id="__codelineno-0-497" name="__codelineno-0-497"></a> <span class="n">deadline</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">monotonic</span><span class="p">()</span> <span class="o">+</span> <span class="n">timeout</span>
|
||||
</span><span id="__span-0-498"><a id="__codelineno-0-498" name="__codelineno-0-498"></a> <span class="k">try</span><span class="p">:</span>
|
||||
</span><span id="__span-0-499"><a id="__codelineno-0-499" name="__codelineno-0-499"></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
|
||||
</span><span id="__span-0-500"><a id="__codelineno-0-500" name="__codelineno-0-500"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_input_bridge</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-501"><a id="__codelineno-0-501" name="__codelineno-0-501"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_input_bridge</span><span class="o">.</span><span class="n">ensure_active</span><span class="p">()</span>
|
||||
</span><span id="__span-0-502"><a id="__codelineno-0-502" name="__codelineno-0-502"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">check</span><span class="p">()</span>
|
||||
</span><span id="__span-0-503"><a id="__codelineno-0-503" name="__codelineno-0-503"></a> <span class="k">if</span> <span class="n">result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-504"><a id="__codelineno-0-504" name="__codelineno-0-504"></a> <span class="k">return</span> <span class="n">result</span>
|
||||
</span><span id="__span-0-505"><a id="__codelineno-0-505" name="__codelineno-0-505"></a> <span class="k">if</span> <span class="n">time</span><span class="o">.</span><span class="n">monotonic</span><span class="p">()</span> <span class="o">+</span> <span class="n">interval</span> <span class="o">>=</span> <span class="n">deadline</span><span class="p">:</span>
|
||||
</span><span id="__span-0-506"><a id="__codelineno-0-506" name="__codelineno-0-506"></a> <span class="k">raise</span> <span class="ne">TimeoutError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No approval within </span><span class="si">{</span><span class="n">timeout</span><span class="si">:</span><span class="s2">.0f</span><span class="si">}</span><span class="s2">s"</span><span class="p">)</span>
|
||||
</span><span id="__span-0-507"><a id="__codelineno-0-507" name="__codelineno-0-507"></a> <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="n">interval</span><span class="p">)</span>
|
||||
</span><span id="__span-0-508"><a id="__codelineno-0-508" name="__codelineno-0-508"></a> <span class="k">finally</span><span class="p">:</span>
|
||||
</span><span id="__span-0-509"><a id="__codelineno-0-509" name="__codelineno-0-509"></a> <span class="n">show_notice</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="normal"><a href="#__codelineno-0-509">509</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-510">510</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-486"><a id="__codelineno-0-486" name="__codelineno-0-486"></a><span class="k">def</span><span class="w"> </span><span class="nf">wait_for_approval</span><span class="p">(</span>
|
||||
</span><span id="__span-0-487"><a id="__codelineno-0-487" name="__codelineno-0-487"></a> <span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">check</span><span class="p">:</span> <span class="n">Callable</span><span class="p">[[],</span> <span class="n">Optional</span><span class="p">[</span><span class="n">T</span><span class="p">]],</span> <span class="n">timeout</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">interval</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">3.0</span>
|
||||
</span><span id="__span-0-488"><a id="__codelineno-0-488" name="__codelineno-0-488"></a><span class="p">)</span> <span class="o">-></span> <span class="n">T</span><span class="p">:</span>
|
||||
</span><span id="__span-0-489"><a id="__codelineno-0-489" name="__codelineno-0-489"></a><span class="w"> </span><span class="sd">"""Show ``message``, then call ``check`` until it returns a value.</span>
|
||||
</span><span id="__span-0-490"><a id="__codelineno-0-490" name="__codelineno-0-490"></a>
|
||||
</span><span id="__span-0-491"><a id="__codelineno-0-491" name="__codelineno-0-491"></a><span class="sd"> Use it for a login that the user approves on another device, such as a pair code.</span>
|
||||
</span><span id="__span-0-492"><a id="__codelineno-0-492" name="__codelineno-0-492"></a><span class="sd"> ``check`` returns None while the approval is pending, and must return within a few</span>
|
||||
</span><span id="__span-0-493"><a id="__codelineno-0-493" name="__codelineno-0-493"></a><span class="sd"> seconds. Raises TimeoutError after ``timeout`` seconds, and RuntimeError when the</span>
|
||||
</span><span id="__span-0-494"><a id="__codelineno-0-494" name="__codelineno-0-494"></a><span class="sd"> remote session no longer exists. A REST download job shows ``message`` as its ``notice``.</span>
|
||||
</span><span id="__span-0-495"><a id="__codelineno-0-495" name="__codelineno-0-495"></a><span class="sd"> """</span>
|
||||
</span><span id="__span-0-496"><a id="__codelineno-0-496" name="__codelineno-0-496"></a> <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
||||
</span><span id="__span-0-497"><a id="__codelineno-0-497" name="__codelineno-0-497"></a> <span class="n">show_notice</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
||||
</span><span id="__span-0-498"><a id="__codelineno-0-498" name="__codelineno-0-498"></a> <span class="n">deadline</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">monotonic</span><span class="p">()</span> <span class="o">+</span> <span class="n">timeout</span>
|
||||
</span><span id="__span-0-499"><a id="__codelineno-0-499" name="__codelineno-0-499"></a> <span class="k">try</span><span class="p">:</span>
|
||||
</span><span id="__span-0-500"><a id="__codelineno-0-500" name="__codelineno-0-500"></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
|
||||
</span><span id="__span-0-501"><a id="__codelineno-0-501" name="__codelineno-0-501"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_input_bridge</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-502"><a id="__codelineno-0-502" name="__codelineno-0-502"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_input_bridge</span><span class="o">.</span><span class="n">ensure_active</span><span class="p">()</span>
|
||||
</span><span id="__span-0-503"><a id="__codelineno-0-503" name="__codelineno-0-503"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">check</span><span class="p">()</span>
|
||||
</span><span id="__span-0-504"><a id="__codelineno-0-504" name="__codelineno-0-504"></a> <span class="k">if</span> <span class="n">result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-505"><a id="__codelineno-0-505" name="__codelineno-0-505"></a> <span class="k">return</span> <span class="n">result</span>
|
||||
</span><span id="__span-0-506"><a id="__codelineno-0-506" name="__codelineno-0-506"></a> <span class="k">if</span> <span class="n">time</span><span class="o">.</span><span class="n">monotonic</span><span class="p">()</span> <span class="o">+</span> <span class="n">interval</span> <span class="o">>=</span> <span class="n">deadline</span><span class="p">:</span>
|
||||
</span><span id="__span-0-507"><a id="__codelineno-0-507" name="__codelineno-0-507"></a> <span class="k">raise</span> <span class="ne">TimeoutError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No approval within </span><span class="si">{</span><span class="n">timeout</span><span class="si">:</span><span class="s2">.0f</span><span class="si">}</span><span class="s2">s"</span><span class="p">)</span>
|
||||
</span><span id="__span-0-508"><a id="__codelineno-0-508" name="__codelineno-0-508"></a> <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="n">interval</span><span class="p">)</span>
|
||||
</span><span id="__span-0-509"><a id="__codelineno-0-509" name="__codelineno-0-509"></a> <span class="k">finally</span><span class="p">:</span>
|
||||
</span><span id="__span-0-510"><a id="__codelineno-0-510" name="__codelineno-0-510"></a> <span class="n">show_notice</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -3847,8 +3849,7 @@ Ideally re-use the title ID argument (that is, self.title).</p>
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>unshackle/core/service.py</code></summary>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-511">511</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-512">512</a></span>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-512">512</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-513">513</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-514">514</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-515">515</a></span>
|
||||
@@ -3856,16 +3857,17 @@ Ideally re-use the title ID argument (that is, self.title).</p>
|
||||
<span class="normal"><a href="#__codelineno-0-517">517</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-518">518</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-519">519</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-520">520</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-511"><a id="__codelineno-0-511" name="__codelineno-0-511"></a><span class="k">def</span><span class="w"> </span><span class="nf">search</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Generator</span><span class="p">[</span><span class="n">SearchResult</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">]:</span>
|
||||
</span><span id="__span-0-512"><a id="__codelineno-0-512" name="__codelineno-0-512"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-513"><a id="__codelineno-0-513" name="__codelineno-0-513"></a><span class="sd"> Find titles from the Service by query.</span>
|
||||
</span><span id="__span-0-514"><a id="__codelineno-0-514" name="__codelineno-0-514"></a>
|
||||
</span><span id="__span-0-515"><a id="__codelineno-0-515" name="__codelineno-0-515"></a><span class="sd"> The Service class must take the query as a CLI argument.</span>
|
||||
</span><span id="__span-0-516"><a id="__codelineno-0-516" name="__codelineno-0-516"></a><span class="sd"> Ideally re-use the title ID argument (that is, self.title).</span>
|
||||
</span><span id="__span-0-517"><a id="__codelineno-0-517" name="__codelineno-0-517"></a>
|
||||
</span><span id="__span-0-518"><a id="__codelineno-0-518" name="__codelineno-0-518"></a><span class="sd"> unshackle displays the search results in the order yielded.</span>
|
||||
</span><span id="__span-0-519"><a id="__codelineno-0-519" name="__codelineno-0-519"></a><span class="sd"> """</span>
|
||||
</span><span id="__span-0-520"><a id="__codelineno-0-520" name="__codelineno-0-520"></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Search functionality has not been implemented by </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="normal"><a href="#__codelineno-0-520">520</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-521">521</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-512"><a id="__codelineno-0-512" name="__codelineno-0-512"></a><span class="k">def</span><span class="w"> </span><span class="nf">search</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Generator</span><span class="p">[</span><span class="n">SearchResult</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">]:</span>
|
||||
</span><span id="__span-0-513"><a id="__codelineno-0-513" name="__codelineno-0-513"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-514"><a id="__codelineno-0-514" name="__codelineno-0-514"></a><span class="sd"> Find titles from the Service by query.</span>
|
||||
</span><span id="__span-0-515"><a id="__codelineno-0-515" name="__codelineno-0-515"></a>
|
||||
</span><span id="__span-0-516"><a id="__codelineno-0-516" name="__codelineno-0-516"></a><span class="sd"> The Service class must take the query as a CLI argument.</span>
|
||||
</span><span id="__span-0-517"><a id="__codelineno-0-517" name="__codelineno-0-517"></a><span class="sd"> Ideally re-use the title ID argument (that is, self.title).</span>
|
||||
</span><span id="__span-0-518"><a id="__codelineno-0-518" name="__codelineno-0-518"></a>
|
||||
</span><span id="__span-0-519"><a id="__codelineno-0-519" name="__codelineno-0-519"></a><span class="sd"> unshackle displays the search results in the order yielded.</span>
|
||||
</span><span id="__span-0-520"><a id="__codelineno-0-520" name="__codelineno-0-520"></a><span class="sd"> """</span>
|
||||
</span><span id="__span-0-521"><a id="__codelineno-0-521" name="__codelineno-0-521"></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Search functionality has not been implemented by </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -3899,8 +3901,7 @@ Ideally re-use the title ID argument (that is, self.title).</p>
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>unshackle/core/service.py</code></summary>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-522">522</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-523">523</a></span>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-523">523</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-524">524</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-525">525</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-526">526</a></span>
|
||||
@@ -3912,20 +3913,21 @@ Ideally re-use the title ID argument (that is, self.title).</p>
|
||||
<span class="normal"><a href="#__codelineno-0-532">532</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-533">533</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-534">534</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-535">535</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-522"><a id="__codelineno-0-522" name="__codelineno-0-522"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_widevine_service_certificate</span><span class="p">(</span>
|
||||
</span><span id="__span-0-523"><a id="__codelineno-0-523" name="__codelineno-0-523"></a> <span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">challenge</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="n">Title_T</span><span class="p">,</span> <span class="n">track</span><span class="p">:</span> <span class="n">AnyTrack</span>
|
||||
</span><span id="__span-0-524"><a id="__codelineno-0-524" name="__codelineno-0-524"></a><span class="p">)</span> <span class="o">-></span> <span class="n">Union</span><span class="p">[</span><span class="nb">bytes</span><span class="p">,</span> <span class="nb">str</span><span class="p">]:</span>
|
||||
</span><span id="__span-0-525"><a id="__codelineno-0-525" name="__codelineno-0-525"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-526"><a id="__codelineno-0-526" name="__codelineno-0-526"></a><span class="sd"> Get the Widevine Service Certificate used for Privacy Mode.</span>
|
||||
</span><span id="__span-0-527"><a id="__codelineno-0-527" name="__codelineno-0-527"></a>
|
||||
</span><span id="__span-0-528"><a id="__codelineno-0-528" name="__codelineno-0-528"></a><span class="sd"> :param challenge: The service challenge, providing this to a License endpoint should return the</span>
|
||||
</span><span id="__span-0-529"><a id="__codelineno-0-529" name="__codelineno-0-529"></a><span class="sd"> privacy certificate that the service uses.</span>
|
||||
</span><span id="__span-0-530"><a id="__codelineno-0-530" name="__codelineno-0-530"></a><span class="sd"> :param title: The current `Title` from get_titles that unshackle processes now. unshackle</span>
|
||||
</span><span id="__span-0-531"><a id="__codelineno-0-531" name="__codelineno-0-531"></a><span class="sd"> gives this in case it holds data you need, for example for an HTTP request.</span>
|
||||
</span><span id="__span-0-532"><a id="__codelineno-0-532" name="__codelineno-0-532"></a><span class="sd"> :param track: The current `Track` needing decryption. Provided for same reason as `title`.</span>
|
||||
</span><span id="__span-0-533"><a id="__codelineno-0-533" name="__codelineno-0-533"></a><span class="sd"> :return: The Service Privacy Certificate as Bytes or a Base64 string. Do not Base64 Encode or</span>
|
||||
</span><span id="__span-0-534"><a id="__codelineno-0-534" name="__codelineno-0-534"></a><span class="sd"> Decode the data, return as is to reduce unnecessary computations.</span>
|
||||
</span><span id="__span-0-535"><a id="__codelineno-0-535" name="__codelineno-0-535"></a><span class="sd"> """</span>
|
||||
<span class="normal"><a href="#__codelineno-0-535">535</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-536">536</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-523"><a id="__codelineno-0-523" name="__codelineno-0-523"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_widevine_service_certificate</span><span class="p">(</span>
|
||||
</span><span id="__span-0-524"><a id="__codelineno-0-524" name="__codelineno-0-524"></a> <span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">challenge</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="n">Title_T</span><span class="p">,</span> <span class="n">track</span><span class="p">:</span> <span class="n">AnyTrack</span>
|
||||
</span><span id="__span-0-525"><a id="__codelineno-0-525" name="__codelineno-0-525"></a><span class="p">)</span> <span class="o">-></span> <span class="n">Union</span><span class="p">[</span><span class="nb">bytes</span><span class="p">,</span> <span class="nb">str</span><span class="p">]:</span>
|
||||
</span><span id="__span-0-526"><a id="__codelineno-0-526" name="__codelineno-0-526"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-527"><a id="__codelineno-0-527" name="__codelineno-0-527"></a><span class="sd"> Get the Widevine Service Certificate used for Privacy Mode.</span>
|
||||
</span><span id="__span-0-528"><a id="__codelineno-0-528" name="__codelineno-0-528"></a>
|
||||
</span><span id="__span-0-529"><a id="__codelineno-0-529" name="__codelineno-0-529"></a><span class="sd"> :param challenge: The service challenge, providing this to a License endpoint should return the</span>
|
||||
</span><span id="__span-0-530"><a id="__codelineno-0-530" name="__codelineno-0-530"></a><span class="sd"> privacy certificate that the service uses.</span>
|
||||
</span><span id="__span-0-531"><a id="__codelineno-0-531" name="__codelineno-0-531"></a><span class="sd"> :param title: The current `Title` from get_titles that unshackle processes now. unshackle</span>
|
||||
</span><span id="__span-0-532"><a id="__codelineno-0-532" name="__codelineno-0-532"></a><span class="sd"> gives this in case it holds data you need, for example for an HTTP request.</span>
|
||||
</span><span id="__span-0-533"><a id="__codelineno-0-533" name="__codelineno-0-533"></a><span class="sd"> :param track: The current `Track` needing decryption. Provided for same reason as `title`.</span>
|
||||
</span><span id="__span-0-534"><a id="__codelineno-0-534" name="__codelineno-0-534"></a><span class="sd"> :return: The Service Privacy Certificate as Bytes or a Base64 string. Do not Base64 Encode or</span>
|
||||
</span><span id="__span-0-535"><a id="__codelineno-0-535" name="__codelineno-0-535"></a><span class="sd"> Decode the data, return as is to reduce unnecessary computations.</span>
|
||||
</span><span id="__span-0-536"><a id="__codelineno-0-536" name="__codelineno-0-536"></a><span class="sd"> """</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -3961,8 +3963,7 @@ The service can then ban, revoke, disable, or downgrade that device.</p>
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>unshackle/core/service.py</code></summary>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-537">537</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-538">538</a></span>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-538">538</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-539">539</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-540">540</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-541">541</a></span>
|
||||
@@ -3978,24 +3979,25 @@ The service can then ban, revoke, disable, or downgrade that device.</p>
|
||||
<span class="normal"><a href="#__codelineno-0-551">551</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-552">552</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-553">553</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-554">554</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-537"><a id="__codelineno-0-537" name="__codelineno-0-537"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_widevine_license</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">challenge</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="n">Title_T</span><span class="p">,</span> <span class="n">track</span><span class="p">:</span> <span class="n">AnyTrack</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">bytes</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]:</span>
|
||||
</span><span id="__span-0-538"><a id="__codelineno-0-538" name="__codelineno-0-538"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-539"><a id="__codelineno-0-539" name="__codelineno-0-539"></a><span class="sd"> Get a Widevine License message by sending a License Request (challenge).</span>
|
||||
</span><span id="__span-0-540"><a id="__codelineno-0-540" name="__codelineno-0-540"></a>
|
||||
</span><span id="__span-0-541"><a id="__codelineno-0-541" name="__codelineno-0-541"></a><span class="sd"> This License message contains the encrypted content keys and will be</span>
|
||||
</span><span id="__span-0-542"><a id="__codelineno-0-542" name="__codelineno-0-542"></a><span class="sd"> read by the Cdm and decrypted.</span>
|
||||
</span><span id="__span-0-543"><a id="__codelineno-0-543" name="__codelineno-0-543"></a>
|
||||
</span><span id="__span-0-544"><a id="__codelineno-0-544" name="__codelineno-0-544"></a><span class="sd"> This is a very important request to get correct. A bad, unexpected, or missing</span>
|
||||
</span><span id="__span-0-545"><a id="__codelineno-0-545" name="__codelineno-0-545"></a><span class="sd"> value in the request can cause the service to detect your CDM device.</span>
|
||||
</span><span id="__span-0-546"><a id="__codelineno-0-546" name="__codelineno-0-546"></a><span class="sd"> The service can then ban, revoke, disable, or downgrade that device.</span>
|
||||
</span><span id="__span-0-547"><a id="__codelineno-0-547" name="__codelineno-0-547"></a>
|
||||
</span><span id="__span-0-548"><a id="__codelineno-0-548" name="__codelineno-0-548"></a><span class="sd"> :param challenge: The license challenge from the Widevine CDM.</span>
|
||||
</span><span id="__span-0-549"><a id="__codelineno-0-549" name="__codelineno-0-549"></a><span class="sd"> :param title: The current `Title` from get_titles that unshackle processes now. unshackle</span>
|
||||
</span><span id="__span-0-550"><a id="__codelineno-0-550" name="__codelineno-0-550"></a><span class="sd"> gives this in case it holds data you need, for example for an HTTP request.</span>
|
||||
</span><span id="__span-0-551"><a id="__codelineno-0-551" name="__codelineno-0-551"></a><span class="sd"> :param track: The current `Track` needing decryption. Provided for same reason as `title`.</span>
|
||||
</span><span id="__span-0-552"><a id="__codelineno-0-552" name="__codelineno-0-552"></a><span class="sd"> :return: The License response as Bytes or a Base64 string. Do not Base64 Encode or</span>
|
||||
</span><span id="__span-0-553"><a id="__codelineno-0-553" name="__codelineno-0-553"></a><span class="sd"> Decode the data, return as is to reduce unnecessary computations.</span>
|
||||
</span><span id="__span-0-554"><a id="__codelineno-0-554" name="__codelineno-0-554"></a><span class="sd"> """</span>
|
||||
<span class="normal"><a href="#__codelineno-0-554">554</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-555">555</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-538"><a id="__codelineno-0-538" name="__codelineno-0-538"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_widevine_license</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">challenge</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="n">Title_T</span><span class="p">,</span> <span class="n">track</span><span class="p">:</span> <span class="n">AnyTrack</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">bytes</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]:</span>
|
||||
</span><span id="__span-0-539"><a id="__codelineno-0-539" name="__codelineno-0-539"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-540"><a id="__codelineno-0-540" name="__codelineno-0-540"></a><span class="sd"> Get a Widevine License message by sending a License Request (challenge).</span>
|
||||
</span><span id="__span-0-541"><a id="__codelineno-0-541" name="__codelineno-0-541"></a>
|
||||
</span><span id="__span-0-542"><a id="__codelineno-0-542" name="__codelineno-0-542"></a><span class="sd"> This License message contains the encrypted content keys and will be</span>
|
||||
</span><span id="__span-0-543"><a id="__codelineno-0-543" name="__codelineno-0-543"></a><span class="sd"> read by the Cdm and decrypted.</span>
|
||||
</span><span id="__span-0-544"><a id="__codelineno-0-544" name="__codelineno-0-544"></a>
|
||||
</span><span id="__span-0-545"><a id="__codelineno-0-545" name="__codelineno-0-545"></a><span class="sd"> This is a very important request to get correct. A bad, unexpected, or missing</span>
|
||||
</span><span id="__span-0-546"><a id="__codelineno-0-546" name="__codelineno-0-546"></a><span class="sd"> value in the request can cause the service to detect your CDM device.</span>
|
||||
</span><span id="__span-0-547"><a id="__codelineno-0-547" name="__codelineno-0-547"></a><span class="sd"> The service can then ban, revoke, disable, or downgrade that device.</span>
|
||||
</span><span id="__span-0-548"><a id="__codelineno-0-548" name="__codelineno-0-548"></a>
|
||||
</span><span id="__span-0-549"><a id="__codelineno-0-549" name="__codelineno-0-549"></a><span class="sd"> :param challenge: The license challenge from the Widevine CDM.</span>
|
||||
</span><span id="__span-0-550"><a id="__codelineno-0-550" name="__codelineno-0-550"></a><span class="sd"> :param title: The current `Title` from get_titles that unshackle processes now. unshackle</span>
|
||||
</span><span id="__span-0-551"><a id="__codelineno-0-551" name="__codelineno-0-551"></a><span class="sd"> gives this in case it holds data you need, for example for an HTTP request.</span>
|
||||
</span><span id="__span-0-552"><a id="__codelineno-0-552" name="__codelineno-0-552"></a><span class="sd"> :param track: The current `Track` needing decryption. Provided for same reason as `title`.</span>
|
||||
</span><span id="__span-0-553"><a id="__codelineno-0-553" name="__codelineno-0-553"></a><span class="sd"> :return: The License response as Bytes or a Base64 string. Do not Base64 Encode or</span>
|
||||
</span><span id="__span-0-554"><a id="__codelineno-0-554" name="__codelineno-0-554"></a><span class="sd"> Decode the data, return as is to reduce unnecessary computations.</span>
|
||||
</span><span id="__span-0-555"><a id="__codelineno-0-555" name="__codelineno-0-555"></a><span class="sd"> """</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -4031,8 +4033,7 @@ The service can then ban, revoke, disable, or downgrade that device.</p>
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>unshackle/core/service.py</code></summary>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-556">556</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-557">557</a></span>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-557">557</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-558">558</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-559">559</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-560">560</a></span>
|
||||
@@ -4055,31 +4056,32 @@ The service can then ban, revoke, disable, or downgrade that device.</p>
|
||||
<span class="normal"><a href="#__codelineno-0-577">577</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-578">578</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-579">579</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-580">580</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-556"><a id="__codelineno-0-556" name="__codelineno-0-556"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_playready_license</span><span class="p">(</span>
|
||||
</span><span id="__span-0-557"><a id="__codelineno-0-557" name="__codelineno-0-557"></a> <span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">challenge</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="n">Title_T</span><span class="p">,</span> <span class="n">track</span><span class="p">:</span> <span class="n">AnyTrack</span>
|
||||
</span><span id="__span-0-558"><a id="__codelineno-0-558" name="__codelineno-0-558"></a><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">bytes</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]:</span>
|
||||
</span><span id="__span-0-559"><a id="__codelineno-0-559" name="__codelineno-0-559"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-560"><a id="__codelineno-0-560" name="__codelineno-0-560"></a><span class="sd"> Get a PlayReady License message by sending a License Request (challenge).</span>
|
||||
</span><span id="__span-0-561"><a id="__codelineno-0-561" name="__codelineno-0-561"></a>
|
||||
</span><span id="__span-0-562"><a id="__codelineno-0-562" name="__codelineno-0-562"></a><span class="sd"> This License message contains the encrypted content keys and will be</span>
|
||||
</span><span id="__span-0-563"><a id="__codelineno-0-563" name="__codelineno-0-563"></a><span class="sd"> read by the CDM and decrypted.</span>
|
||||
</span><span id="__span-0-564"><a id="__codelineno-0-564" name="__codelineno-0-564"></a>
|
||||
</span><span id="__span-0-565"><a id="__codelineno-0-565" name="__codelineno-0-565"></a><span class="sd"> This is a very important request to get correct. A bad, unexpected, or missing</span>
|
||||
</span><span id="__span-0-566"><a id="__codelineno-0-566" name="__codelineno-0-566"></a><span class="sd"> value in the request can cause the service to detect your CDM device.</span>
|
||||
</span><span id="__span-0-567"><a id="__codelineno-0-567" name="__codelineno-0-567"></a><span class="sd"> The service can then ban, revoke, disable, or downgrade that device.</span>
|
||||
</span><span id="__span-0-568"><a id="__codelineno-0-568" name="__codelineno-0-568"></a>
|
||||
</span><span id="__span-0-569"><a id="__codelineno-0-569" name="__codelineno-0-569"></a><span class="sd"> :param challenge: The license challenge from the PlayReady CDM.</span>
|
||||
</span><span id="__span-0-570"><a id="__codelineno-0-570" name="__codelineno-0-570"></a><span class="sd"> :param title: The current `Title` from get_titles that unshackle processes now. unshackle</span>
|
||||
</span><span id="__span-0-571"><a id="__codelineno-0-571" name="__codelineno-0-571"></a><span class="sd"> gives this in case it holds data you need, for example for an HTTP request.</span>
|
||||
</span><span id="__span-0-572"><a id="__codelineno-0-572" name="__codelineno-0-572"></a><span class="sd"> :param track: The current `Track` needing decryption. Provided for same reason as `title`.</span>
|
||||
</span><span id="__span-0-573"><a id="__codelineno-0-573" name="__codelineno-0-573"></a><span class="sd"> :return: The License response as Bytes or a Base64 string. Do not Base64 Encode or</span>
|
||||
</span><span id="__span-0-574"><a id="__codelineno-0-574" name="__codelineno-0-574"></a><span class="sd"> Decode the data, return as is to reduce unnecessary computations.</span>
|
||||
</span><span id="__span-0-575"><a id="__codelineno-0-575" name="__codelineno-0-575"></a><span class="sd"> """</span>
|
||||
</span><span id="__span-0-576"><a id="__codelineno-0-576" name="__codelineno-0-576"></a> <span class="c1"># A service that implements Widevine licensing only still gets PlayReady, with the</span>
|
||||
</span><span id="__span-0-577"><a id="__codelineno-0-577" name="__codelineno-0-577"></a> <span class="c1"># arguments its own signature declares.</span>
|
||||
</span><span id="__span-0-578"><a id="__codelineno-0-578" name="__codelineno-0-578"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_widevine_license</span><span class="p">(</span>
|
||||
</span><span id="__span-0-579"><a id="__codelineno-0-579" name="__codelineno-0-579"></a> <span class="o">**</span><span class="n">declared_kwargs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_widevine_license</span><span class="p">,</span> <span class="p">{</span><span class="s2">"challenge"</span><span class="p">:</span> <span class="n">challenge</span><span class="p">,</span> <span class="s2">"title"</span><span class="p">:</span> <span class="n">title</span><span class="p">,</span> <span class="s2">"track"</span><span class="p">:</span> <span class="n">track</span><span class="p">})</span>
|
||||
</span><span id="__span-0-580"><a id="__codelineno-0-580" name="__codelineno-0-580"></a> <span class="p">)</span>
|
||||
<span class="normal"><a href="#__codelineno-0-580">580</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-581">581</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-557"><a id="__codelineno-0-557" name="__codelineno-0-557"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_playready_license</span><span class="p">(</span>
|
||||
</span><span id="__span-0-558"><a id="__codelineno-0-558" name="__codelineno-0-558"></a> <span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">challenge</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="n">Title_T</span><span class="p">,</span> <span class="n">track</span><span class="p">:</span> <span class="n">AnyTrack</span>
|
||||
</span><span id="__span-0-559"><a id="__codelineno-0-559" name="__codelineno-0-559"></a><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">bytes</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]:</span>
|
||||
</span><span id="__span-0-560"><a id="__codelineno-0-560" name="__codelineno-0-560"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-561"><a id="__codelineno-0-561" name="__codelineno-0-561"></a><span class="sd"> Get a PlayReady License message by sending a License Request (challenge).</span>
|
||||
</span><span id="__span-0-562"><a id="__codelineno-0-562" name="__codelineno-0-562"></a>
|
||||
</span><span id="__span-0-563"><a id="__codelineno-0-563" name="__codelineno-0-563"></a><span class="sd"> This License message contains the encrypted content keys and will be</span>
|
||||
</span><span id="__span-0-564"><a id="__codelineno-0-564" name="__codelineno-0-564"></a><span class="sd"> read by the CDM and decrypted.</span>
|
||||
</span><span id="__span-0-565"><a id="__codelineno-0-565" name="__codelineno-0-565"></a>
|
||||
</span><span id="__span-0-566"><a id="__codelineno-0-566" name="__codelineno-0-566"></a><span class="sd"> This is a very important request to get correct. A bad, unexpected, or missing</span>
|
||||
</span><span id="__span-0-567"><a id="__codelineno-0-567" name="__codelineno-0-567"></a><span class="sd"> value in the request can cause the service to detect your CDM device.</span>
|
||||
</span><span id="__span-0-568"><a id="__codelineno-0-568" name="__codelineno-0-568"></a><span class="sd"> The service can then ban, revoke, disable, or downgrade that device.</span>
|
||||
</span><span id="__span-0-569"><a id="__codelineno-0-569" name="__codelineno-0-569"></a>
|
||||
</span><span id="__span-0-570"><a id="__codelineno-0-570" name="__codelineno-0-570"></a><span class="sd"> :param challenge: The license challenge from the PlayReady CDM.</span>
|
||||
</span><span id="__span-0-571"><a id="__codelineno-0-571" name="__codelineno-0-571"></a><span class="sd"> :param title: The current `Title` from get_titles that unshackle processes now. unshackle</span>
|
||||
</span><span id="__span-0-572"><a id="__codelineno-0-572" name="__codelineno-0-572"></a><span class="sd"> gives this in case it holds data you need, for example for an HTTP request.</span>
|
||||
</span><span id="__span-0-573"><a id="__codelineno-0-573" name="__codelineno-0-573"></a><span class="sd"> :param track: The current `Track` needing decryption. Provided for same reason as `title`.</span>
|
||||
</span><span id="__span-0-574"><a id="__codelineno-0-574" name="__codelineno-0-574"></a><span class="sd"> :return: The License response as Bytes or a Base64 string. Do not Base64 Encode or</span>
|
||||
</span><span id="__span-0-575"><a id="__codelineno-0-575" name="__codelineno-0-575"></a><span class="sd"> Decode the data, return as is to reduce unnecessary computations.</span>
|
||||
</span><span id="__span-0-576"><a id="__codelineno-0-576" name="__codelineno-0-576"></a><span class="sd"> """</span>
|
||||
</span><span id="__span-0-577"><a id="__codelineno-0-577" name="__codelineno-0-577"></a> <span class="c1"># A service that implements Widevine licensing only still gets PlayReady, with the</span>
|
||||
</span><span id="__span-0-578"><a id="__codelineno-0-578" name="__codelineno-0-578"></a> <span class="c1"># arguments its own signature declares.</span>
|
||||
</span><span id="__span-0-579"><a id="__codelineno-0-579" name="__codelineno-0-579"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_widevine_license</span><span class="p">(</span>
|
||||
</span><span id="__span-0-580"><a id="__codelineno-0-580" name="__codelineno-0-580"></a> <span class="o">**</span><span class="n">declared_kwargs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_widevine_license</span><span class="p">,</span> <span class="p">{</span><span class="s2">"challenge"</span><span class="p">:</span> <span class="n">challenge</span><span class="p">,</span> <span class="s2">"title"</span><span class="p">:</span> <span class="n">title</span><span class="p">,</span> <span class="s2">"track"</span><span class="p">:</span> <span class="n">track</span><span class="p">})</span>
|
||||
</span><span id="__span-0-581"><a id="__codelineno-0-581" name="__codelineno-0-581"></a> <span class="p">)</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -4115,8 +4117,7 @@ and the license is a JWK Set, e.g. <code>{"keys": [{"kty": "oct", "k": "...", "k
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>unshackle/core/service.py</code></summary>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-582">582</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-583">583</a></span>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-583">583</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-584">584</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-585">585</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-586">586</a></span>
|
||||
@@ -4134,26 +4135,27 @@ and the license is a JWK Set, e.g. <code>{"keys": [{"kty": "oct", "k": "...", "k
|
||||
<span class="normal"><a href="#__codelineno-0-598">598</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-599">599</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-600">600</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-601">601</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-582"><a id="__codelineno-0-582" name="__codelineno-0-582"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_clearkey_license</span><span class="p">(</span>
|
||||
</span><span id="__span-0-583"><a id="__codelineno-0-583" name="__codelineno-0-583"></a> <span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">challenge</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="n">Title_T</span><span class="p">,</span> <span class="n">track</span><span class="p">:</span> <span class="n">AnyTrack</span>
|
||||
</span><span id="__span-0-584"><a id="__codelineno-0-584" name="__codelineno-0-584"></a><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">bytes</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="nb">dict</span><span class="p">]]:</span>
|
||||
</span><span id="__span-0-585"><a id="__codelineno-0-585" name="__codelineno-0-585"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-586"><a id="__codelineno-0-586" name="__codelineno-0-586"></a><span class="sd"> Get a W3C ClearKey License (JWK Set) by sending a License Request (challenge).</span>
|
||||
</span><span id="__span-0-587"><a id="__codelineno-0-587" name="__codelineno-0-587"></a>
|
||||
</span><span id="__span-0-588"><a id="__codelineno-0-588" name="__codelineno-0-588"></a><span class="sd"> Used for DASH `org.w3.clearkey` tracks. unshackle uses no CDM here: the challenge is</span>
|
||||
</span><span id="__span-0-589"><a id="__codelineno-0-589" name="__codelineno-0-589"></a><span class="sd"> the W3C EME JSON license request, e.g. ``{"kids": ["<base64url>"], "type": "temporary"}``,</span>
|
||||
</span><span id="__span-0-590"><a id="__codelineno-0-590" name="__codelineno-0-590"></a><span class="sd"> and the license is a JWK Set, e.g. ``{"keys": [{"kty": "oct", "k": "...", "kid": "..."}]}``.</span>
|
||||
</span><span id="__span-0-591"><a id="__codelineno-0-591" name="__codelineno-0-591"></a>
|
||||
</span><span id="__span-0-592"><a id="__codelineno-0-592" name="__codelineno-0-592"></a><span class="sd"> :param challenge: The JSON license request bytes to POST to the license server.</span>
|
||||
</span><span id="__span-0-593"><a id="__codelineno-0-593" name="__codelineno-0-593"></a><span class="sd"> :param title: The current `Title` from get_titles that unshackle processes now. unshackle</span>
|
||||
</span><span id="__span-0-594"><a id="__codelineno-0-594" name="__codelineno-0-594"></a><span class="sd"> gives this in case it holds data you need, for example for an HTTP request.</span>
|
||||
</span><span id="__span-0-595"><a id="__codelineno-0-595" name="__codelineno-0-595"></a><span class="sd"> :param track: The current `Track` needing decryption. Provided for same reason as `title`.</span>
|
||||
</span><span id="__span-0-596"><a id="__codelineno-0-596" name="__codelineno-0-596"></a><span class="sd"> :return: The JWK Set license as a dict, JSON str, or raw bytes. Return None (the default)</span>
|
||||
</span><span id="__span-0-597"><a id="__codelineno-0-597" name="__codelineno-0-597"></a><span class="sd"> to let the framework POST the challenge to the manifest-provided Laurl, if any.</span>
|
||||
</span><span id="__span-0-598"><a id="__codelineno-0-598" name="__codelineno-0-598"></a><span class="sd"> Services with no license server can instead pre-populate the DRM object's</span>
|
||||
</span><span id="__span-0-599"><a id="__codelineno-0-599" name="__codelineno-0-599"></a><span class="sd"> `content_keys` in get_tracks.</span>
|
||||
</span><span id="__span-0-600"><a id="__codelineno-0-600" name="__codelineno-0-600"></a><span class="sd"> """</span>
|
||||
</span><span id="__span-0-601"><a id="__codelineno-0-601" name="__codelineno-0-601"></a> <span class="k">return</span> <span class="kc">None</span>
|
||||
<span class="normal"><a href="#__codelineno-0-601">601</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-602">602</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-583"><a id="__codelineno-0-583" name="__codelineno-0-583"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_clearkey_license</span><span class="p">(</span>
|
||||
</span><span id="__span-0-584"><a id="__codelineno-0-584" name="__codelineno-0-584"></a> <span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">challenge</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="n">Title_T</span><span class="p">,</span> <span class="n">track</span><span class="p">:</span> <span class="n">AnyTrack</span>
|
||||
</span><span id="__span-0-585"><a id="__codelineno-0-585" name="__codelineno-0-585"></a><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">bytes</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="nb">dict</span><span class="p">]]:</span>
|
||||
</span><span id="__span-0-586"><a id="__codelineno-0-586" name="__codelineno-0-586"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-587"><a id="__codelineno-0-587" name="__codelineno-0-587"></a><span class="sd"> Get a W3C ClearKey License (JWK Set) by sending a License Request (challenge).</span>
|
||||
</span><span id="__span-0-588"><a id="__codelineno-0-588" name="__codelineno-0-588"></a>
|
||||
</span><span id="__span-0-589"><a id="__codelineno-0-589" name="__codelineno-0-589"></a><span class="sd"> Used for DASH `org.w3.clearkey` tracks. unshackle uses no CDM here: the challenge is</span>
|
||||
</span><span id="__span-0-590"><a id="__codelineno-0-590" name="__codelineno-0-590"></a><span class="sd"> the W3C EME JSON license request, e.g. ``{"kids": ["<base64url>"], "type": "temporary"}``,</span>
|
||||
</span><span id="__span-0-591"><a id="__codelineno-0-591" name="__codelineno-0-591"></a><span class="sd"> and the license is a JWK Set, e.g. ``{"keys": [{"kty": "oct", "k": "...", "kid": "..."}]}``.</span>
|
||||
</span><span id="__span-0-592"><a id="__codelineno-0-592" name="__codelineno-0-592"></a>
|
||||
</span><span id="__span-0-593"><a id="__codelineno-0-593" name="__codelineno-0-593"></a><span class="sd"> :param challenge: The JSON license request bytes to POST to the license server.</span>
|
||||
</span><span id="__span-0-594"><a id="__codelineno-0-594" name="__codelineno-0-594"></a><span class="sd"> :param title: The current `Title` from get_titles that unshackle processes now. unshackle</span>
|
||||
</span><span id="__span-0-595"><a id="__codelineno-0-595" name="__codelineno-0-595"></a><span class="sd"> gives this in case it holds data you need, for example for an HTTP request.</span>
|
||||
</span><span id="__span-0-596"><a id="__codelineno-0-596" name="__codelineno-0-596"></a><span class="sd"> :param track: The current `Track` needing decryption. Provided for same reason as `title`.</span>
|
||||
</span><span id="__span-0-597"><a id="__codelineno-0-597" name="__codelineno-0-597"></a><span class="sd"> :return: The JWK Set license as a dict, JSON str, or raw bytes. Return None (the default)</span>
|
||||
</span><span id="__span-0-598"><a id="__codelineno-0-598" name="__codelineno-0-598"></a><span class="sd"> to let the framework POST the challenge to the manifest-provided Laurl, if any.</span>
|
||||
</span><span id="__span-0-599"><a id="__codelineno-0-599" name="__codelineno-0-599"></a><span class="sd"> Services with no license server can instead pre-populate the DRM object's</span>
|
||||
</span><span id="__span-0-600"><a id="__codelineno-0-600" name="__codelineno-0-600"></a><span class="sd"> `content_keys` in get_tracks.</span>
|
||||
</span><span id="__span-0-601"><a id="__codelineno-0-601" name="__codelineno-0-601"></a><span class="sd"> """</span>
|
||||
</span><span id="__span-0-602"><a id="__codelineno-0-602" name="__codelineno-0-602"></a> <span class="k">return</span> <span class="kc">None</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -4188,8 +4190,7 @@ This can be useful to store information on each title that you need later, like
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>unshackle/core/service.py</code></summary>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-603">603</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-604">604</a></span>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-604">604</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-605">605</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-606">606</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-607">607</a></span>
|
||||
@@ -4201,20 +4202,21 @@ This can be useful to store information on each title that you need later, like
|
||||
<span class="normal"><a href="#__codelineno-0-613">613</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-614">614</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-615">615</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-616">616</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-603"><a id="__codelineno-0-603" name="__codelineno-0-603"></a><span class="nd">@abstractmethod</span>
|
||||
</span><span id="__span-0-604"><a id="__codelineno-0-604" name="__codelineno-0-604"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_titles</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Titles_T</span><span class="p">:</span>
|
||||
</span><span id="__span-0-605"><a id="__codelineno-0-605" name="__codelineno-0-605"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-606"><a id="__codelineno-0-606" name="__codelineno-0-606"></a><span class="sd"> Get Titles for the provided title ID.</span>
|
||||
</span><span id="__span-0-607"><a id="__codelineno-0-607" name="__codelineno-0-607"></a>
|
||||
</span><span id="__span-0-608"><a id="__codelineno-0-608" name="__codelineno-0-608"></a><span class="sd"> Return a Movies, Series, or Album objects containing Movie, Episode, or Song title objects respectively.</span>
|
||||
</span><span id="__span-0-609"><a id="__codelineno-0-609" name="__codelineno-0-609"></a><span class="sd"> The returned data must be for the given title ID, or a spawn of the title ID.</span>
|
||||
</span><span id="__span-0-610"><a id="__codelineno-0-610" name="__codelineno-0-610"></a>
|
||||
</span><span id="__span-0-611"><a id="__codelineno-0-611" name="__codelineno-0-611"></a><span class="sd"> You must return at least one object. If you do not, unshackle presumes an invalid</span>
|
||||
</span><span id="__span-0-612"><a id="__codelineno-0-612" name="__codelineno-0-612"></a><span class="sd"> Title ID.</span>
|
||||
</span><span id="__span-0-613"><a id="__codelineno-0-613" name="__codelineno-0-613"></a>
|
||||
</span><span id="__span-0-614"><a id="__codelineno-0-614" name="__codelineno-0-614"></a><span class="sd"> You can use the `data` dictionary class instance attribute of each Title to store data you may need later on.</span>
|
||||
</span><span id="__span-0-615"><a id="__codelineno-0-615" name="__codelineno-0-615"></a><span class="sd"> This can be useful to store information on each title that you need later, like any sub-asset IDs, or such.</span>
|
||||
</span><span id="__span-0-616"><a id="__codelineno-0-616" name="__codelineno-0-616"></a><span class="sd"> """</span>
|
||||
<span class="normal"><a href="#__codelineno-0-616">616</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-617">617</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-604"><a id="__codelineno-0-604" name="__codelineno-0-604"></a><span class="nd">@abstractmethod</span>
|
||||
</span><span id="__span-0-605"><a id="__codelineno-0-605" name="__codelineno-0-605"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_titles</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Titles_T</span><span class="p">:</span>
|
||||
</span><span id="__span-0-606"><a id="__codelineno-0-606" name="__codelineno-0-606"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-607"><a id="__codelineno-0-607" name="__codelineno-0-607"></a><span class="sd"> Get Titles for the provided title ID.</span>
|
||||
</span><span id="__span-0-608"><a id="__codelineno-0-608" name="__codelineno-0-608"></a>
|
||||
</span><span id="__span-0-609"><a id="__codelineno-0-609" name="__codelineno-0-609"></a><span class="sd"> Return a Movies, Series, or Album objects containing Movie, Episode, or Song title objects respectively.</span>
|
||||
</span><span id="__span-0-610"><a id="__codelineno-0-610" name="__codelineno-0-610"></a><span class="sd"> The returned data must be for the given title ID, or a spawn of the title ID.</span>
|
||||
</span><span id="__span-0-611"><a id="__codelineno-0-611" name="__codelineno-0-611"></a>
|
||||
</span><span id="__span-0-612"><a id="__codelineno-0-612" name="__codelineno-0-612"></a><span class="sd"> You must return at least one object. If you do not, unshackle presumes an invalid</span>
|
||||
</span><span id="__span-0-613"><a id="__codelineno-0-613" name="__codelineno-0-613"></a><span class="sd"> Title ID.</span>
|
||||
</span><span id="__span-0-614"><a id="__codelineno-0-614" name="__codelineno-0-614"></a>
|
||||
</span><span id="__span-0-615"><a id="__codelineno-0-615" name="__codelineno-0-615"></a><span class="sd"> You can use the `data` dictionary class instance attribute of each Title to store data you may need later on.</span>
|
||||
</span><span id="__span-0-616"><a id="__codelineno-0-616" name="__codelineno-0-616"></a><span class="sd"> This can be useful to store information on each title that you need later, like any sub-asset IDs, or such.</span>
|
||||
</span><span id="__span-0-617"><a id="__codelineno-0-617" name="__codelineno-0-617"></a><span class="sd"> """</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -4296,8 +4298,7 @@ fallback to cached data when API calls fail.</p>
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>unshackle/core/service.py</code></summary>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-618">618</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-619">619</a></span>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-619">619</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-620">620</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-621">621</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-622">622</a></span>
|
||||
@@ -4338,49 +4339,50 @@ fallback to cached data when API calls fail.</p>
|
||||
<span class="normal"><a href="#__codelineno-0-657">657</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-658">658</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-659">659</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-660">660</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-618"><a id="__codelineno-0-618" name="__codelineno-0-618"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_titles_cached</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title_id</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">Titles_T</span><span class="p">:</span>
|
||||
</span><span id="__span-0-619"><a id="__codelineno-0-619" name="__codelineno-0-619"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-620"><a id="__codelineno-0-620" name="__codelineno-0-620"></a><span class="sd"> Cached wrapper around get_titles() to reduce redundant API calls.</span>
|
||||
</span><span id="__span-0-621"><a id="__codelineno-0-621" name="__codelineno-0-621"></a>
|
||||
</span><span id="__span-0-622"><a id="__codelineno-0-622" name="__codelineno-0-622"></a><span class="sd"> This method checks the cache before calling get_titles() and handles</span>
|
||||
</span><span id="__span-0-623"><a id="__codelineno-0-623" name="__codelineno-0-623"></a><span class="sd"> fallback to cached data when API calls fail.</span>
|
||||
</span><span id="__span-0-624"><a id="__codelineno-0-624" name="__codelineno-0-624"></a>
|
||||
</span><span id="__span-0-625"><a id="__codelineno-0-625" name="__codelineno-0-625"></a><span class="sd"> Args:</span>
|
||||
</span><span id="__span-0-626"><a id="__codelineno-0-626" name="__codelineno-0-626"></a><span class="sd"> title_id: Optional title ID for cache key generation.</span>
|
||||
</span><span id="__span-0-627"><a id="__codelineno-0-627" name="__codelineno-0-627"></a><span class="sd"> If not provided, will try to extract from service instance.</span>
|
||||
</span><span id="__span-0-628"><a id="__codelineno-0-628" name="__codelineno-0-628"></a>
|
||||
</span><span id="__span-0-629"><a id="__codelineno-0-629" name="__codelineno-0-629"></a><span class="sd"> Returns:</span>
|
||||
</span><span id="__span-0-630"><a id="__codelineno-0-630" name="__codelineno-0-630"></a><span class="sd"> Titles object (Movies, Series, or Album)</span>
|
||||
</span><span id="__span-0-631"><a id="__codelineno-0-631" name="__codelineno-0-631"></a><span class="sd"> """</span>
|
||||
</span><span id="__span-0-632"><a id="__codelineno-0-632" name="__codelineno-0-632"></a> <span class="k">if</span> <span class="n">title_id</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-633"><a id="__codelineno-0-633" name="__codelineno-0-633"></a> <span class="c1"># Different services store the title ID in different attributes</span>
|
||||
</span><span id="__span-0-634"><a id="__codelineno-0-634" name="__codelineno-0-634"></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"title"</span><span class="p">):</span>
|
||||
</span><span id="__span-0-635"><a id="__codelineno-0-635" name="__codelineno-0-635"></a> <span class="n">title_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span>
|
||||
</span><span id="__span-0-636"><a id="__codelineno-0-636" name="__codelineno-0-636"></a> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"title_id"</span><span class="p">):</span>
|
||||
</span><span id="__span-0-637"><a id="__codelineno-0-637" name="__codelineno-0-637"></a> <span class="n">title_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">title_id</span>
|
||||
</span><span id="__span-0-638"><a id="__codelineno-0-638" name="__codelineno-0-638"></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="__span-0-639"><a id="__codelineno-0-639" name="__codelineno-0-639"></a> <span class="c1"># If we can't determine title_id, just call get_titles directly</span>
|
||||
</span><span id="__span-0-640"><a id="__codelineno-0-640" name="__codelineno-0-640"></a> <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Cannot determine title_id for caching, bypassing cache"</span><span class="p">)</span>
|
||||
</span><span id="__span-0-641"><a id="__codelineno-0-641" name="__codelineno-0-641"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">apply_title_map</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_titles</span><span class="p">())</span>
|
||||
</span><span id="__span-0-642"><a id="__codelineno-0-642" name="__codelineno-0-642"></a>
|
||||
</span><span id="__span-0-643"><a id="__codelineno-0-643" name="__codelineno-0-643"></a> <span class="n">no_cache</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
</span><span id="__span-0-644"><a id="__codelineno-0-644" name="__codelineno-0-644"></a> <span class="n">reset_cache</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
</span><span id="__span-0-645"><a id="__codelineno-0-645" name="__codelineno-0-645"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ctx</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="o">.</span><span class="n">parent</span><span class="p">:</span>
|
||||
</span><span id="__span-0-646"><a id="__codelineno-0-646" name="__codelineno-0-646"></a> <span class="n">no_cache</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">params</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"no_cache"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
||||
</span><span id="__span-0-647"><a id="__codelineno-0-647" name="__codelineno-0-647"></a> <span class="n">reset_cache</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">params</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"reset_cache"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
||||
</span><span id="__span-0-648"><a id="__codelineno-0-648" name="__codelineno-0-648"></a>
|
||||
</span><span id="__span-0-649"><a id="__codelineno-0-649" name="__codelineno-0-649"></a> <span class="c1"># Get account hash for cache key</span>
|
||||
</span><span id="__span-0-650"><a id="__codelineno-0-650" name="__codelineno-0-650"></a> <span class="n">account_hash</span> <span class="o">=</span> <span class="n">get_account_hash</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">credential</span><span class="p">)</span>
|
||||
</span><span id="__span-0-651"><a id="__codelineno-0-651" name="__codelineno-0-651"></a>
|
||||
</span><span id="__span-0-652"><a id="__codelineno-0-652" name="__codelineno-0-652"></a> <span class="n">titles</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">title_cache</span><span class="o">.</span><span class="n">get_cached_titles</span><span class="p">(</span>
|
||||
</span><span id="__span-0-653"><a id="__codelineno-0-653" name="__codelineno-0-653"></a> <span class="n">title_id</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">title_id</span><span class="p">),</span>
|
||||
</span><span id="__span-0-654"><a id="__codelineno-0-654" name="__codelineno-0-654"></a> <span class="n">fetch_function</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">get_titles</span><span class="p">,</span>
|
||||
</span><span id="__span-0-655"><a id="__codelineno-0-655" name="__codelineno-0-655"></a> <span class="n">region</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">current_region</span><span class="p">,</span>
|
||||
</span><span id="__span-0-656"><a id="__codelineno-0-656" name="__codelineno-0-656"></a> <span class="n">account_hash</span><span class="o">=</span><span class="n">account_hash</span><span class="p">,</span>
|
||||
</span><span id="__span-0-657"><a id="__codelineno-0-657" name="__codelineno-0-657"></a> <span class="n">no_cache</span><span class="o">=</span><span class="n">no_cache</span><span class="p">,</span>
|
||||
</span><span id="__span-0-658"><a id="__codelineno-0-658" name="__codelineno-0-658"></a> <span class="n">reset_cache</span><span class="o">=</span><span class="n">reset_cache</span><span class="p">,</span>
|
||||
</span><span id="__span-0-659"><a id="__codelineno-0-659" name="__codelineno-0-659"></a> <span class="p">)</span>
|
||||
</span><span id="__span-0-660"><a id="__codelineno-0-660" name="__codelineno-0-660"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">apply_title_map</span><span class="p">(</span><span class="n">titles</span><span class="p">)</span>
|
||||
<span class="normal"><a href="#__codelineno-0-660">660</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-661">661</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-619"><a id="__codelineno-0-619" name="__codelineno-0-619"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_titles_cached</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title_id</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">Titles_T</span><span class="p">:</span>
|
||||
</span><span id="__span-0-620"><a id="__codelineno-0-620" name="__codelineno-0-620"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-621"><a id="__codelineno-0-621" name="__codelineno-0-621"></a><span class="sd"> Cached wrapper around get_titles() to reduce redundant API calls.</span>
|
||||
</span><span id="__span-0-622"><a id="__codelineno-0-622" name="__codelineno-0-622"></a>
|
||||
</span><span id="__span-0-623"><a id="__codelineno-0-623" name="__codelineno-0-623"></a><span class="sd"> This method checks the cache before calling get_titles() and handles</span>
|
||||
</span><span id="__span-0-624"><a id="__codelineno-0-624" name="__codelineno-0-624"></a><span class="sd"> fallback to cached data when API calls fail.</span>
|
||||
</span><span id="__span-0-625"><a id="__codelineno-0-625" name="__codelineno-0-625"></a>
|
||||
</span><span id="__span-0-626"><a id="__codelineno-0-626" name="__codelineno-0-626"></a><span class="sd"> Args:</span>
|
||||
</span><span id="__span-0-627"><a id="__codelineno-0-627" name="__codelineno-0-627"></a><span class="sd"> title_id: Optional title ID for cache key generation.</span>
|
||||
</span><span id="__span-0-628"><a id="__codelineno-0-628" name="__codelineno-0-628"></a><span class="sd"> If not provided, will try to extract from service instance.</span>
|
||||
</span><span id="__span-0-629"><a id="__codelineno-0-629" name="__codelineno-0-629"></a>
|
||||
</span><span id="__span-0-630"><a id="__codelineno-0-630" name="__codelineno-0-630"></a><span class="sd"> Returns:</span>
|
||||
</span><span id="__span-0-631"><a id="__codelineno-0-631" name="__codelineno-0-631"></a><span class="sd"> Titles object (Movies, Series, or Album)</span>
|
||||
</span><span id="__span-0-632"><a id="__codelineno-0-632" name="__codelineno-0-632"></a><span class="sd"> """</span>
|
||||
</span><span id="__span-0-633"><a id="__codelineno-0-633" name="__codelineno-0-633"></a> <span class="k">if</span> <span class="n">title_id</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-634"><a id="__codelineno-0-634" name="__codelineno-0-634"></a> <span class="c1"># Different services store the title ID in different attributes</span>
|
||||
</span><span id="__span-0-635"><a id="__codelineno-0-635" name="__codelineno-0-635"></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"title"</span><span class="p">):</span>
|
||||
</span><span id="__span-0-636"><a id="__codelineno-0-636" name="__codelineno-0-636"></a> <span class="n">title_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span>
|
||||
</span><span id="__span-0-637"><a id="__codelineno-0-637" name="__codelineno-0-637"></a> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"title_id"</span><span class="p">):</span>
|
||||
</span><span id="__span-0-638"><a id="__codelineno-0-638" name="__codelineno-0-638"></a> <span class="n">title_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">title_id</span>
|
||||
</span><span id="__span-0-639"><a id="__codelineno-0-639" name="__codelineno-0-639"></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="__span-0-640"><a id="__codelineno-0-640" name="__codelineno-0-640"></a> <span class="c1"># If we can't determine title_id, just call get_titles directly</span>
|
||||
</span><span id="__span-0-641"><a id="__codelineno-0-641" name="__codelineno-0-641"></a> <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Cannot determine title_id for caching, bypassing cache"</span><span class="p">)</span>
|
||||
</span><span id="__span-0-642"><a id="__codelineno-0-642" name="__codelineno-0-642"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">apply_title_map</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_titles</span><span class="p">())</span>
|
||||
</span><span id="__span-0-643"><a id="__codelineno-0-643" name="__codelineno-0-643"></a>
|
||||
</span><span id="__span-0-644"><a id="__codelineno-0-644" name="__codelineno-0-644"></a> <span class="n">no_cache</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
</span><span id="__span-0-645"><a id="__codelineno-0-645" name="__codelineno-0-645"></a> <span class="n">reset_cache</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
</span><span id="__span-0-646"><a id="__codelineno-0-646" name="__codelineno-0-646"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ctx</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="o">.</span><span class="n">parent</span><span class="p">:</span>
|
||||
</span><span id="__span-0-647"><a id="__codelineno-0-647" name="__codelineno-0-647"></a> <span class="n">no_cache</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">params</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"no_cache"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
||||
</span><span id="__span-0-648"><a id="__codelineno-0-648" name="__codelineno-0-648"></a> <span class="n">reset_cache</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">params</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"reset_cache"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
||||
</span><span id="__span-0-649"><a id="__codelineno-0-649" name="__codelineno-0-649"></a>
|
||||
</span><span id="__span-0-650"><a id="__codelineno-0-650" name="__codelineno-0-650"></a> <span class="c1"># Get account hash for cache key</span>
|
||||
</span><span id="__span-0-651"><a id="__codelineno-0-651" name="__codelineno-0-651"></a> <span class="n">account_hash</span> <span class="o">=</span> <span class="n">get_account_hash</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">credential</span><span class="p">)</span>
|
||||
</span><span id="__span-0-652"><a id="__codelineno-0-652" name="__codelineno-0-652"></a>
|
||||
</span><span id="__span-0-653"><a id="__codelineno-0-653" name="__codelineno-0-653"></a> <span class="n">titles</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">title_cache</span><span class="o">.</span><span class="n">get_cached_titles</span><span class="p">(</span>
|
||||
</span><span id="__span-0-654"><a id="__codelineno-0-654" name="__codelineno-0-654"></a> <span class="n">title_id</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">title_id</span><span class="p">),</span>
|
||||
</span><span id="__span-0-655"><a id="__codelineno-0-655" name="__codelineno-0-655"></a> <span class="n">fetch_function</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">get_titles</span><span class="p">,</span>
|
||||
</span><span id="__span-0-656"><a id="__codelineno-0-656" name="__codelineno-0-656"></a> <span class="n">region</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">current_region</span><span class="p">,</span>
|
||||
</span><span id="__span-0-657"><a id="__codelineno-0-657" name="__codelineno-0-657"></a> <span class="n">account_hash</span><span class="o">=</span><span class="n">account_hash</span><span class="p">,</span>
|
||||
</span><span id="__span-0-658"><a id="__codelineno-0-658" name="__codelineno-0-658"></a> <span class="n">no_cache</span><span class="o">=</span><span class="n">no_cache</span><span class="p">,</span>
|
||||
</span><span id="__span-0-659"><a id="__codelineno-0-659" name="__codelineno-0-659"></a> <span class="n">reset_cache</span><span class="o">=</span><span class="n">reset_cache</span><span class="p">,</span>
|
||||
</span><span id="__span-0-660"><a id="__codelineno-0-660" name="__codelineno-0-660"></a> <span class="p">)</span>
|
||||
</span><span id="__span-0-661"><a id="__codelineno-0-661" name="__codelineno-0-661"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">apply_title_map</span><span class="p">(</span><span class="n">titles</span><span class="p">)</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -4408,23 +4410,23 @@ title cache so config edits take effect without a cache reset, and before any
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>unshackle/core/service.py</code></summary>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-662">662</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-663">663</a></span>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-663">663</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-664">664</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-665">665</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-666">666</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-667">667</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-668">668</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-669">669</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-670">670</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-662"><a id="__codelineno-0-662" name="__codelineno-0-662"></a><span class="k">def</span><span class="w"> </span><span class="nf">apply_title_map</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">titles</span><span class="p">:</span> <span class="n">Titles_T</span><span class="p">)</span> <span class="o">-></span> <span class="n">Titles_T</span><span class="p">:</span>
|
||||
</span><span id="__span-0-663"><a id="__codelineno-0-663" name="__codelineno-0-663"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-664"><a id="__codelineno-0-664" name="__codelineno-0-664"></a><span class="sd"> Rewrite service-provided titles using the per-service ``title_map`` config.</span>
|
||||
</span><span id="__span-0-665"><a id="__codelineno-0-665" name="__codelineno-0-665"></a>
|
||||
</span><span id="__span-0-666"><a id="__codelineno-0-666" name="__codelineno-0-666"></a><span class="sd"> ``title_map`` lives under ``services.<TAG>`` in unshackle.yaml. Applied after the</span>
|
||||
</span><span id="__span-0-667"><a id="__codelineno-0-667" name="__codelineno-0-667"></a><span class="sd"> title cache so config edits take effect without a cache reset, and before any</span>
|
||||
</span><span id="__span-0-668"><a id="__codelineno-0-668" name="__codelineno-0-668"></a><span class="sd"> ``--enrich`` override so enrich wins. See ``remap_titles`` for the match rules.</span>
|
||||
</span><span id="__span-0-669"><a id="__codelineno-0-669" name="__codelineno-0-669"></a><span class="sd"> """</span>
|
||||
</span><span id="__span-0-670"><a id="__codelineno-0-670" name="__codelineno-0-670"></a> <span class="k">return</span> <span class="n">remap_titles</span><span class="p">(</span><span class="n">titles</span><span class="p">,</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span> <span class="ow">or</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"title_map"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">{})</span>
|
||||
<span class="normal"><a href="#__codelineno-0-670">670</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-671">671</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-663"><a id="__codelineno-0-663" name="__codelineno-0-663"></a><span class="k">def</span><span class="w"> </span><span class="nf">apply_title_map</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">titles</span><span class="p">:</span> <span class="n">Titles_T</span><span class="p">)</span> <span class="o">-></span> <span class="n">Titles_T</span><span class="p">:</span>
|
||||
</span><span id="__span-0-664"><a id="__codelineno-0-664" name="__codelineno-0-664"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-665"><a id="__codelineno-0-665" name="__codelineno-0-665"></a><span class="sd"> Rewrite service-provided titles using the per-service ``title_map`` config.</span>
|
||||
</span><span id="__span-0-666"><a id="__codelineno-0-666" name="__codelineno-0-666"></a>
|
||||
</span><span id="__span-0-667"><a id="__codelineno-0-667" name="__codelineno-0-667"></a><span class="sd"> ``title_map`` lives under ``services.<TAG>`` in unshackle.yaml. Applied after the</span>
|
||||
</span><span id="__span-0-668"><a id="__codelineno-0-668" name="__codelineno-0-668"></a><span class="sd"> title cache so config edits take effect without a cache reset, and before any</span>
|
||||
</span><span id="__span-0-669"><a id="__codelineno-0-669" name="__codelineno-0-669"></a><span class="sd"> ``--enrich`` override so enrich wins. See ``remap_titles`` for the match rules.</span>
|
||||
</span><span id="__span-0-670"><a id="__codelineno-0-670" name="__codelineno-0-670"></a><span class="sd"> """</span>
|
||||
</span><span id="__span-0-671"><a id="__codelineno-0-671" name="__codelineno-0-671"></a> <span class="k">return</span> <span class="n">remap_titles</span><span class="p">(</span><span class="n">titles</span><span class="p">,</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span> <span class="ow">or</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"title_map"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">{})</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -4471,8 +4473,7 @@ the Track's media data, then do.</p>
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>unshackle/core/service.py</code></summary>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-672">672</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-673">673</a></span>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-673">673</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-674">674</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-675">675</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-676">676</a></span>
|
||||
@@ -4500,36 +4501,37 @@ the Track's media data, then do.</p>
|
||||
<span class="normal"><a href="#__codelineno-0-698">698</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-699">699</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-700">700</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-701">701</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-672"><a id="__codelineno-0-672" name="__codelineno-0-672"></a><span class="nd">@abstractmethod</span>
|
||||
</span><span id="__span-0-673"><a id="__codelineno-0-673" name="__codelineno-0-673"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_tracks</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="n">Title_T</span><span class="p">)</span> <span class="o">-></span> <span class="n">Tracks</span><span class="p">:</span>
|
||||
</span><span id="__span-0-674"><a id="__codelineno-0-674" name="__codelineno-0-674"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-675"><a id="__codelineno-0-675" name="__codelineno-0-675"></a><span class="sd"> Get Track objects of the Title.</span>
|
||||
</span><span id="__span-0-676"><a id="__codelineno-0-676" name="__codelineno-0-676"></a>
|
||||
</span><span id="__span-0-677"><a id="__codelineno-0-677" name="__codelineno-0-677"></a><span class="sd"> Return a Tracks object, which itself can contain Video, Audio, Subtitle or even Chapters.</span>
|
||||
</span><span id="__span-0-678"><a id="__codelineno-0-678" name="__codelineno-0-678"></a><span class="sd"> Tracks.videos, Tracks.audio, Tracks.subtitles, and Track.chapters should be a List of Track objects.</span>
|
||||
</span><span id="__span-0-679"><a id="__codelineno-0-679" name="__codelineno-0-679"></a>
|
||||
</span><span id="__span-0-680"><a id="__codelineno-0-680" name="__codelineno-0-680"></a><span class="sd"> Each Track in the Tracks should represent a Video/Audio track, Representation, or</span>
|
||||
</span><span id="__span-0-681"><a id="__codelineno-0-681" name="__codelineno-0-681"></a><span class="sd"> Adaptation, or a Subtitle file.</span>
|
||||
</span><span id="__span-0-682"><a id="__codelineno-0-682" name="__codelineno-0-682"></a>
|
||||
</span><span id="__span-0-683"><a id="__codelineno-0-683" name="__codelineno-0-683"></a><span class="sd"> While one Track should only hold information for one downloadable track, try to get as many</span>
|
||||
</span><span id="__span-0-684"><a id="__codelineno-0-684" name="__codelineno-0-684"></a><span class="sd"> unique Track objects per track type so track selection by the root code can give you more</span>
|
||||
</span><span id="__span-0-685"><a id="__codelineno-0-685" name="__codelineno-0-685"></a><span class="sd"> options in terms of Resolution, Bitrate, Codecs, Language, and such.</span>
|
||||
</span><span id="__span-0-686"><a id="__codelineno-0-686" name="__codelineno-0-686"></a>
|
||||
</span><span id="__span-0-687"><a id="__codelineno-0-687" name="__codelineno-0-687"></a><span class="sd"> No decision making or filtering of which Tracks get returned should happen here. It can be</span>
|
||||
</span><span id="__span-0-688"><a id="__codelineno-0-688" name="__codelineno-0-688"></a><span class="sd"> considered an error to filter for e.g. resolution, codec, and such. All filtering based on</span>
|
||||
</span><span id="__span-0-689"><a id="__codelineno-0-689" name="__codelineno-0-689"></a><span class="sd"> arguments will be done by the root code automatically when needed.</span>
|
||||
</span><span id="__span-0-690"><a id="__codelineno-0-690" name="__codelineno-0-690"></a>
|
||||
</span><span id="__span-0-691"><a id="__codelineno-0-691" name="__codelineno-0-691"></a><span class="sd"> Make sure you correctly mark which Tracks have encryption, and which DRM System they</span>
|
||||
</span><span id="__span-0-692"><a id="__codelineno-0-692" name="__codelineno-0-692"></a><span class="sd"> use, with the `drm` property.</span>
|
||||
</span><span id="__span-0-693"><a id="__codelineno-0-693" name="__codelineno-0-693"></a>
|
||||
</span><span id="__span-0-694"><a id="__codelineno-0-694" name="__codelineno-0-694"></a><span class="sd"> If you can get the Track's KID (Key ID) as a 32 char (16 bit) HEX string, give it to the</span>
|
||||
</span><span id="__span-0-695"><a id="__codelineno-0-695" name="__codelineno-0-695"></a><span class="sd"> Track's `kid` variable, as it will speed up the decryption process later on. The service</span>
|
||||
</span><span id="__span-0-696"><a id="__codelineno-0-696" name="__codelineno-0-696"></a><span class="sd"> decides whether it is necessary. Generally if you can give it, without downloading any of</span>
|
||||
</span><span id="__span-0-697"><a id="__codelineno-0-697" name="__codelineno-0-697"></a><span class="sd"> the Track's media data, then do.</span>
|
||||
</span><span id="__span-0-698"><a id="__codelineno-0-698" name="__codelineno-0-698"></a>
|
||||
</span><span id="__span-0-699"><a id="__codelineno-0-699" name="__codelineno-0-699"></a><span class="sd"> :param title: The current `Title` from get_titles that unshackle processes now.</span>
|
||||
</span><span id="__span-0-700"><a id="__codelineno-0-700" name="__codelineno-0-700"></a><span class="sd"> :return: Tracks object containing Video, Audio, Subtitles, and Chapters, if available.</span>
|
||||
</span><span id="__span-0-701"><a id="__codelineno-0-701" name="__codelineno-0-701"></a><span class="sd"> """</span>
|
||||
<span class="normal"><a href="#__codelineno-0-701">701</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-702">702</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-673"><a id="__codelineno-0-673" name="__codelineno-0-673"></a><span class="nd">@abstractmethod</span>
|
||||
</span><span id="__span-0-674"><a id="__codelineno-0-674" name="__codelineno-0-674"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_tracks</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="n">Title_T</span><span class="p">)</span> <span class="o">-></span> <span class="n">Tracks</span><span class="p">:</span>
|
||||
</span><span id="__span-0-675"><a id="__codelineno-0-675" name="__codelineno-0-675"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-676"><a id="__codelineno-0-676" name="__codelineno-0-676"></a><span class="sd"> Get Track objects of the Title.</span>
|
||||
</span><span id="__span-0-677"><a id="__codelineno-0-677" name="__codelineno-0-677"></a>
|
||||
</span><span id="__span-0-678"><a id="__codelineno-0-678" name="__codelineno-0-678"></a><span class="sd"> Return a Tracks object, which itself can contain Video, Audio, Subtitle or even Chapters.</span>
|
||||
</span><span id="__span-0-679"><a id="__codelineno-0-679" name="__codelineno-0-679"></a><span class="sd"> Tracks.videos, Tracks.audio, Tracks.subtitles, and Track.chapters should be a List of Track objects.</span>
|
||||
</span><span id="__span-0-680"><a id="__codelineno-0-680" name="__codelineno-0-680"></a>
|
||||
</span><span id="__span-0-681"><a id="__codelineno-0-681" name="__codelineno-0-681"></a><span class="sd"> Each Track in the Tracks should represent a Video/Audio track, Representation, or</span>
|
||||
</span><span id="__span-0-682"><a id="__codelineno-0-682" name="__codelineno-0-682"></a><span class="sd"> Adaptation, or a Subtitle file.</span>
|
||||
</span><span id="__span-0-683"><a id="__codelineno-0-683" name="__codelineno-0-683"></a>
|
||||
</span><span id="__span-0-684"><a id="__codelineno-0-684" name="__codelineno-0-684"></a><span class="sd"> While one Track should only hold information for one downloadable track, try to get as many</span>
|
||||
</span><span id="__span-0-685"><a id="__codelineno-0-685" name="__codelineno-0-685"></a><span class="sd"> unique Track objects per track type so track selection by the root code can give you more</span>
|
||||
</span><span id="__span-0-686"><a id="__codelineno-0-686" name="__codelineno-0-686"></a><span class="sd"> options in terms of Resolution, Bitrate, Codecs, Language, and such.</span>
|
||||
</span><span id="__span-0-687"><a id="__codelineno-0-687" name="__codelineno-0-687"></a>
|
||||
</span><span id="__span-0-688"><a id="__codelineno-0-688" name="__codelineno-0-688"></a><span class="sd"> No decision making or filtering of which Tracks get returned should happen here. It can be</span>
|
||||
</span><span id="__span-0-689"><a id="__codelineno-0-689" name="__codelineno-0-689"></a><span class="sd"> considered an error to filter for e.g. resolution, codec, and such. All filtering based on</span>
|
||||
</span><span id="__span-0-690"><a id="__codelineno-0-690" name="__codelineno-0-690"></a><span class="sd"> arguments will be done by the root code automatically when needed.</span>
|
||||
</span><span id="__span-0-691"><a id="__codelineno-0-691" name="__codelineno-0-691"></a>
|
||||
</span><span id="__span-0-692"><a id="__codelineno-0-692" name="__codelineno-0-692"></a><span class="sd"> Make sure you correctly mark which Tracks have encryption, and which DRM System they</span>
|
||||
</span><span id="__span-0-693"><a id="__codelineno-0-693" name="__codelineno-0-693"></a><span class="sd"> use, with the `drm` property.</span>
|
||||
</span><span id="__span-0-694"><a id="__codelineno-0-694" name="__codelineno-0-694"></a>
|
||||
</span><span id="__span-0-695"><a id="__codelineno-0-695" name="__codelineno-0-695"></a><span class="sd"> If you can get the Track's KID (Key ID) as a 32 char (16 bit) HEX string, give it to the</span>
|
||||
</span><span id="__span-0-696"><a id="__codelineno-0-696" name="__codelineno-0-696"></a><span class="sd"> Track's `kid` variable, as it will speed up the decryption process later on. The service</span>
|
||||
</span><span id="__span-0-697"><a id="__codelineno-0-697" name="__codelineno-0-697"></a><span class="sd"> decides whether it is necessary. Generally if you can give it, without downloading any of</span>
|
||||
</span><span id="__span-0-698"><a id="__codelineno-0-698" name="__codelineno-0-698"></a><span class="sd"> the Track's media data, then do.</span>
|
||||
</span><span id="__span-0-699"><a id="__codelineno-0-699" name="__codelineno-0-699"></a>
|
||||
</span><span id="__span-0-700"><a id="__codelineno-0-700" name="__codelineno-0-700"></a><span class="sd"> :param title: The current `Title` from get_titles that unshackle processes now.</span>
|
||||
</span><span id="__span-0-701"><a id="__codelineno-0-701" name="__codelineno-0-701"></a><span class="sd"> :return: Tracks object containing Video, Audio, Subtitles, and Chapters, if available.</span>
|
||||
</span><span id="__span-0-702"><a id="__codelineno-0-702" name="__codelineno-0-702"></a><span class="sd"> """</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -4596,8 +4598,7 @@ option <code>chapter_fallback_name</code>. For example, <code>"Chapter {i:02}"</
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>unshackle/core/service.py</code></summary>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-703">703</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-704">704</a></span>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-704">704</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-705">705</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-706">706</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-707">707</a></span>
|
||||
@@ -4613,24 +4614,25 @@ option <code>chapter_fallback_name</code>. For example, <code>"Chapter {i:02}"</
|
||||
<span class="normal"><a href="#__codelineno-0-717">717</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-718">718</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-719">719</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-720">720</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-703"><a id="__codelineno-0-703" name="__codelineno-0-703"></a><span class="nd">@abstractmethod</span>
|
||||
</span><span id="__span-0-704"><a id="__codelineno-0-704" name="__codelineno-0-704"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_chapters</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="n">Title_T</span><span class="p">)</span> <span class="o">-></span> <span class="n">Chapters</span><span class="p">:</span>
|
||||
</span><span id="__span-0-705"><a id="__codelineno-0-705" name="__codelineno-0-705"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-706"><a id="__codelineno-0-706" name="__codelineno-0-706"></a><span class="sd"> Get Chapters for the Title.</span>
|
||||
</span><span id="__span-0-707"><a id="__codelineno-0-707" name="__codelineno-0-707"></a>
|
||||
</span><span id="__span-0-708"><a id="__codelineno-0-708" name="__codelineno-0-708"></a><span class="sd"> Parameters:</span>
|
||||
</span><span id="__span-0-709"><a id="__codelineno-0-709" name="__codelineno-0-709"></a><span class="sd"> title: The current Title from `get_titles` that unshackle processes now.</span>
|
||||
</span><span id="__span-0-710"><a id="__codelineno-0-710" name="__codelineno-0-710"></a>
|
||||
</span><span id="__span-0-711"><a id="__codelineno-0-711" name="__codelineno-0-711"></a><span class="sd"> You must return a Chapters object containing 0 or more Chapter objects.</span>
|
||||
</span><span id="__span-0-712"><a id="__codelineno-0-712" name="__codelineno-0-712"></a>
|
||||
</span><span id="__span-0-713"><a id="__codelineno-0-713" name="__codelineno-0-713"></a><span class="sd"> You do not need to set a Chapter number or sort/order the chapters in any way as</span>
|
||||
</span><span id="__span-0-714"><a id="__codelineno-0-714" name="__codelineno-0-714"></a><span class="sd"> the Chapters class automatically handles all of that for you. If there is no</span>
|
||||
</span><span id="__span-0-715"><a id="__codelineno-0-715" name="__codelineno-0-715"></a><span class="sd"> descriptive name for a Chapter then do not set a name at all.</span>
|
||||
</span><span id="__span-0-716"><a id="__codelineno-0-716" name="__codelineno-0-716"></a>
|
||||
</span><span id="__span-0-717"><a id="__codelineno-0-717" name="__codelineno-0-717"></a><span class="sd"> You must not set Chapter names to "Chapter {n}" or such. If you (or the user)</span>
|
||||
</span><span id="__span-0-718"><a id="__codelineno-0-718" name="__codelineno-0-718"></a><span class="sd"> wants "Chapter {n}" style Chapter names (or similar) then they can use the config</span>
|
||||
</span><span id="__span-0-719"><a id="__codelineno-0-719" name="__codelineno-0-719"></a><span class="sd"> option `chapter_fallback_name`. For example, `"Chapter {i:02}"` for "Chapter 01".</span>
|
||||
</span><span id="__span-0-720"><a id="__codelineno-0-720" name="__codelineno-0-720"></a><span class="sd"> """</span>
|
||||
<span class="normal"><a href="#__codelineno-0-720">720</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-721">721</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-704"><a id="__codelineno-0-704" name="__codelineno-0-704"></a><span class="nd">@abstractmethod</span>
|
||||
</span><span id="__span-0-705"><a id="__codelineno-0-705" name="__codelineno-0-705"></a><span class="k">def</span><span class="w"> </span><span class="nf">get_chapters</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="n">Title_T</span><span class="p">)</span> <span class="o">-></span> <span class="n">Chapters</span><span class="p">:</span>
|
||||
</span><span id="__span-0-706"><a id="__codelineno-0-706" name="__codelineno-0-706"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-707"><a id="__codelineno-0-707" name="__codelineno-0-707"></a><span class="sd"> Get Chapters for the Title.</span>
|
||||
</span><span id="__span-0-708"><a id="__codelineno-0-708" name="__codelineno-0-708"></a>
|
||||
</span><span id="__span-0-709"><a id="__codelineno-0-709" name="__codelineno-0-709"></a><span class="sd"> Parameters:</span>
|
||||
</span><span id="__span-0-710"><a id="__codelineno-0-710" name="__codelineno-0-710"></a><span class="sd"> title: The current Title from `get_titles` that unshackle processes now.</span>
|
||||
</span><span id="__span-0-711"><a id="__codelineno-0-711" name="__codelineno-0-711"></a>
|
||||
</span><span id="__span-0-712"><a id="__codelineno-0-712" name="__codelineno-0-712"></a><span class="sd"> You must return a Chapters object containing 0 or more Chapter objects.</span>
|
||||
</span><span id="__span-0-713"><a id="__codelineno-0-713" name="__codelineno-0-713"></a>
|
||||
</span><span id="__span-0-714"><a id="__codelineno-0-714" name="__codelineno-0-714"></a><span class="sd"> You do not need to set a Chapter number or sort/order the chapters in any way as</span>
|
||||
</span><span id="__span-0-715"><a id="__codelineno-0-715" name="__codelineno-0-715"></a><span class="sd"> the Chapters class automatically handles all of that for you. If there is no</span>
|
||||
</span><span id="__span-0-716"><a id="__codelineno-0-716" name="__codelineno-0-716"></a><span class="sd"> descriptive name for a Chapter then do not set a name at all.</span>
|
||||
</span><span id="__span-0-717"><a id="__codelineno-0-717" name="__codelineno-0-717"></a>
|
||||
</span><span id="__span-0-718"><a id="__codelineno-0-718" name="__codelineno-0-718"></a><span class="sd"> You must not set Chapter names to "Chapter {n}" or such. If you (or the user)</span>
|
||||
</span><span id="__span-0-719"><a id="__codelineno-0-719" name="__codelineno-0-719"></a><span class="sd"> wants "Chapter {n}" style Chapter names (or similar) then they can use the config</span>
|
||||
</span><span id="__span-0-720"><a id="__codelineno-0-720" name="__codelineno-0-720"></a><span class="sd"> option `chapter_fallback_name`. For example, `"Chapter {i:02}"` for "Chapter 01".</span>
|
||||
</span><span id="__span-0-721"><a id="__codelineno-0-721" name="__codelineno-0-721"></a><span class="sd"> """</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -4702,21 +4704,21 @@ option <code>chapter_fallback_name</code>. For example, <code>"Chapter {i:02}"</
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>unshackle/core/service.py</code></summary>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-724">724</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-725">725</a></span>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-725">725</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-726">726</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-727">727</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-728">728</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-729">729</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-730">730</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-731">731</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-724"><a id="__codelineno-0-724" name="__codelineno-0-724"></a><span class="k">def</span><span class="w"> </span><span class="nf">on_segment_downloaded</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">track</span><span class="p">:</span> <span class="n">AnyTrack</span><span class="p">,</span> <span class="n">segment</span><span class="p">:</span> <span class="n">Path</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-725"><a id="__codelineno-0-725" name="__codelineno-0-725"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-726"><a id="__codelineno-0-726" name="__codelineno-0-726"></a><span class="sd"> Called when one of a Track's Segments has finished downloading.</span>
|
||||
</span><span id="__span-0-727"><a id="__codelineno-0-727" name="__codelineno-0-727"></a>
|
||||
</span><span id="__span-0-728"><a id="__codelineno-0-728" name="__codelineno-0-728"></a><span class="sd"> Parameters:</span>
|
||||
</span><span id="__span-0-729"><a id="__codelineno-0-729" name="__codelineno-0-729"></a><span class="sd"> track: The Track object that had a Segment downloaded.</span>
|
||||
</span><span id="__span-0-730"><a id="__codelineno-0-730" name="__codelineno-0-730"></a><span class="sd"> segment: The Path to the downloaded Segment.</span>
|
||||
</span><span id="__span-0-731"><a id="__codelineno-0-731" name="__codelineno-0-731"></a><span class="sd"> """</span>
|
||||
<span class="normal"><a href="#__codelineno-0-731">731</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-732">732</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-725"><a id="__codelineno-0-725" name="__codelineno-0-725"></a><span class="k">def</span><span class="w"> </span><span class="nf">on_segment_downloaded</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">track</span><span class="p">:</span> <span class="n">AnyTrack</span><span class="p">,</span> <span class="n">segment</span><span class="p">:</span> <span class="n">Path</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-726"><a id="__codelineno-0-726" name="__codelineno-0-726"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-727"><a id="__codelineno-0-727" name="__codelineno-0-727"></a><span class="sd"> Called when one of a Track's Segments has finished downloading.</span>
|
||||
</span><span id="__span-0-728"><a id="__codelineno-0-728" name="__codelineno-0-728"></a>
|
||||
</span><span id="__span-0-729"><a id="__codelineno-0-729" name="__codelineno-0-729"></a><span class="sd"> Parameters:</span>
|
||||
</span><span id="__span-0-730"><a id="__codelineno-0-730" name="__codelineno-0-730"></a><span class="sd"> track: The Track object that had a Segment downloaded.</span>
|
||||
</span><span id="__span-0-731"><a id="__codelineno-0-731" name="__codelineno-0-731"></a><span class="sd"> segment: The Path to the downloaded Segment.</span>
|
||||
</span><span id="__span-0-732"><a id="__codelineno-0-732" name="__codelineno-0-732"></a><span class="sd"> """</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -4772,19 +4774,19 @@ option <code>chapter_fallback_name</code>. For example, <code>"Chapter {i:02}"</
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>unshackle/core/service.py</code></summary>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-733">733</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-734">734</a></span>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-734">734</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-735">735</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-736">736</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-737">737</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-738">738</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-739">739</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-733"><a id="__codelineno-0-733" name="__codelineno-0-733"></a><span class="k">def</span><span class="w"> </span><span class="nf">on_track_downloaded</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">track</span><span class="p">:</span> <span class="n">AnyTrack</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-734"><a id="__codelineno-0-734" name="__codelineno-0-734"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-735"><a id="__codelineno-0-735" name="__codelineno-0-735"></a><span class="sd"> Called when a Track has finished downloading.</span>
|
||||
</span><span id="__span-0-736"><a id="__codelineno-0-736" name="__codelineno-0-736"></a>
|
||||
</span><span id="__span-0-737"><a id="__codelineno-0-737" name="__codelineno-0-737"></a><span class="sd"> Parameters:</span>
|
||||
</span><span id="__span-0-738"><a id="__codelineno-0-738" name="__codelineno-0-738"></a><span class="sd"> track: The downloaded Track object.</span>
|
||||
</span><span id="__span-0-739"><a id="__codelineno-0-739" name="__codelineno-0-739"></a><span class="sd"> """</span>
|
||||
<span class="normal"><a href="#__codelineno-0-739">739</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-740">740</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-734"><a id="__codelineno-0-734" name="__codelineno-0-734"></a><span class="k">def</span><span class="w"> </span><span class="nf">on_track_downloaded</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">track</span><span class="p">:</span> <span class="n">AnyTrack</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-735"><a id="__codelineno-0-735" name="__codelineno-0-735"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-736"><a id="__codelineno-0-736" name="__codelineno-0-736"></a><span class="sd"> Called when a Track has finished downloading.</span>
|
||||
</span><span id="__span-0-737"><a id="__codelineno-0-737" name="__codelineno-0-737"></a>
|
||||
</span><span id="__span-0-738"><a id="__codelineno-0-738" name="__codelineno-0-738"></a><span class="sd"> Parameters:</span>
|
||||
</span><span id="__span-0-739"><a id="__codelineno-0-739" name="__codelineno-0-739"></a><span class="sd"> track: The downloaded Track object.</span>
|
||||
</span><span id="__span-0-740"><a id="__codelineno-0-740" name="__codelineno-0-740"></a><span class="sd"> """</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -4873,8 +4875,7 @@ for an HLS track that merged during the download (merge_segments).</p>
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>unshackle/core/service.py</code></summary>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-741">741</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-742">742</a></span>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-742">742</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-743">743</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-744">744</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-745">745</a></span>
|
||||
@@ -4882,16 +4883,17 @@ for an HLS track that merged during the download (merge_segments).</p>
|
||||
<span class="normal"><a href="#__codelineno-0-747">747</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-748">748</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-749">749</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-750">750</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-741"><a id="__codelineno-0-741" name="__codelineno-0-741"></a><span class="k">def</span><span class="w"> </span><span class="nf">on_track_decrypted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">track</span><span class="p">:</span> <span class="n">AnyTrack</span><span class="p">,</span> <span class="n">drm</span><span class="p">:</span> <span class="n">DRM_T</span><span class="p">,</span> <span class="n">segment</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">m3u8</span><span class="o">.</span><span class="n">Segment</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-742"><a id="__codelineno-0-742" name="__codelineno-0-742"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-743"><a id="__codelineno-0-743" name="__codelineno-0-743"></a><span class="sd"> Called when a Track has finished decrypting.</span>
|
||||
</span><span id="__span-0-744"><a id="__codelineno-0-744" name="__codelineno-0-744"></a>
|
||||
</span><span id="__span-0-745"><a id="__codelineno-0-745" name="__codelineno-0-745"></a><span class="sd"> Parameters:</span>
|
||||
</span><span id="__span-0-746"><a id="__codelineno-0-746" name="__codelineno-0-746"></a><span class="sd"> track: The decrypted Track object.</span>
|
||||
</span><span id="__span-0-747"><a id="__codelineno-0-747" name="__codelineno-0-747"></a><span class="sd"> drm: The DRM object it decrypted with.</span>
|
||||
</span><span id="__span-0-748"><a id="__codelineno-0-748" name="__codelineno-0-748"></a><span class="sd"> segment: The decrypted HLS segment information. None for DASH and ISM tracks and</span>
|
||||
</span><span id="__span-0-749"><a id="__codelineno-0-749" name="__codelineno-0-749"></a><span class="sd"> for an HLS track that merged during the download (merge_segments).</span>
|
||||
</span><span id="__span-0-750"><a id="__codelineno-0-750" name="__codelineno-0-750"></a><span class="sd"> """</span>
|
||||
<span class="normal"><a href="#__codelineno-0-750">750</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-751">751</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-742"><a id="__codelineno-0-742" name="__codelineno-0-742"></a><span class="k">def</span><span class="w"> </span><span class="nf">on_track_decrypted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">track</span><span class="p">:</span> <span class="n">AnyTrack</span><span class="p">,</span> <span class="n">drm</span><span class="p">:</span> <span class="n">DRM_T</span><span class="p">,</span> <span class="n">segment</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">m3u8</span><span class="o">.</span><span class="n">Segment</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-743"><a id="__codelineno-0-743" name="__codelineno-0-743"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-744"><a id="__codelineno-0-744" name="__codelineno-0-744"></a><span class="sd"> Called when a Track has finished decrypting.</span>
|
||||
</span><span id="__span-0-745"><a id="__codelineno-0-745" name="__codelineno-0-745"></a>
|
||||
</span><span id="__span-0-746"><a id="__codelineno-0-746" name="__codelineno-0-746"></a><span class="sd"> Parameters:</span>
|
||||
</span><span id="__span-0-747"><a id="__codelineno-0-747" name="__codelineno-0-747"></a><span class="sd"> track: The decrypted Track object.</span>
|
||||
</span><span id="__span-0-748"><a id="__codelineno-0-748" name="__codelineno-0-748"></a><span class="sd"> drm: The DRM object it decrypted with.</span>
|
||||
</span><span id="__span-0-749"><a id="__codelineno-0-749" name="__codelineno-0-749"></a><span class="sd"> segment: The decrypted HLS segment information. None for DASH and ISM tracks and</span>
|
||||
</span><span id="__span-0-750"><a id="__codelineno-0-750" name="__codelineno-0-750"></a><span class="sd"> for an HLS track that merged during the download (merge_segments).</span>
|
||||
</span><span id="__span-0-751"><a id="__codelineno-0-751" name="__codelineno-0-751"></a><span class="sd"> """</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -4947,19 +4949,19 @@ for an HLS track that merged during the download (merge_segments).</p>
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>unshackle/core/service.py</code></summary>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-752">752</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-753">753</a></span>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-753">753</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-754">754</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-755">755</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-756">756</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-757">757</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-758">758</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-752"><a id="__codelineno-0-752" name="__codelineno-0-752"></a><span class="k">def</span><span class="w"> </span><span class="nf">on_track_repacked</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">track</span><span class="p">:</span> <span class="n">AnyTrack</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-753"><a id="__codelineno-0-753" name="__codelineno-0-753"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-754"><a id="__codelineno-0-754" name="__codelineno-0-754"></a><span class="sd"> Called when a Track has finished repacking.</span>
|
||||
</span><span id="__span-0-755"><a id="__codelineno-0-755" name="__codelineno-0-755"></a>
|
||||
</span><span id="__span-0-756"><a id="__codelineno-0-756" name="__codelineno-0-756"></a><span class="sd"> Parameters:</span>
|
||||
</span><span id="__span-0-757"><a id="__codelineno-0-757" name="__codelineno-0-757"></a><span class="sd"> track: The repacked Track object.</span>
|
||||
</span><span id="__span-0-758"><a id="__codelineno-0-758" name="__codelineno-0-758"></a><span class="sd"> """</span>
|
||||
<span class="normal"><a href="#__codelineno-0-758">758</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-759">759</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-753"><a id="__codelineno-0-753" name="__codelineno-0-753"></a><span class="k">def</span><span class="w"> </span><span class="nf">on_track_repacked</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">track</span><span class="p">:</span> <span class="n">AnyTrack</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-754"><a id="__codelineno-0-754" name="__codelineno-0-754"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-755"><a id="__codelineno-0-755" name="__codelineno-0-755"></a><span class="sd"> Called when a Track has finished repacking.</span>
|
||||
</span><span id="__span-0-756"><a id="__codelineno-0-756" name="__codelineno-0-756"></a>
|
||||
</span><span id="__span-0-757"><a id="__codelineno-0-757" name="__codelineno-0-757"></a><span class="sd"> Parameters:</span>
|
||||
</span><span id="__span-0-758"><a id="__codelineno-0-758" name="__codelineno-0-758"></a><span class="sd"> track: The repacked Track object.</span>
|
||||
</span><span id="__span-0-759"><a id="__codelineno-0-759" name="__codelineno-0-759"></a><span class="sd"> """</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -5018,8 +5020,7 @@ MP4 with FFmpeg/mp4box.</p>
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>unshackle/core/service.py</code></summary>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-760">760</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-761">761</a></span>
|
||||
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-761">761</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-762">762</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-763">763</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-764">764</a></span>
|
||||
@@ -5028,17 +5029,18 @@ MP4 with FFmpeg/mp4box.</p>
|
||||
<span class="normal"><a href="#__codelineno-0-767">767</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-768">768</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-769">769</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-770">770</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-760"><a id="__codelineno-0-760" name="__codelineno-0-760"></a><span class="k">def</span><span class="w"> </span><span class="nf">on_track_multiplex</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">track</span><span class="p">:</span> <span class="n">AnyTrack</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-761"><a id="__codelineno-0-761" name="__codelineno-0-761"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-762"><a id="__codelineno-0-762" name="__codelineno-0-762"></a><span class="sd"> Called immediately before unshackle multiplexes a Track into a Container.</span>
|
||||
</span><span id="__span-0-763"><a id="__codelineno-0-763" name="__codelineno-0-763"></a>
|
||||
</span><span id="__span-0-764"><a id="__codelineno-0-764" name="__codelineno-0-764"></a><span class="sd"> Note: Right now unshackle multiplexes only MKV containers. In the future</span>
|
||||
</span><span id="__span-0-765"><a id="__codelineno-0-765" name="__codelineno-0-765"></a><span class="sd"> unshackle can also call this when it multiplexes to other containers like</span>
|
||||
</span><span id="__span-0-766"><a id="__codelineno-0-766" name="__codelineno-0-766"></a><span class="sd"> MP4 with FFmpeg/mp4box.</span>
|
||||
</span><span id="__span-0-767"><a id="__codelineno-0-767" name="__codelineno-0-767"></a>
|
||||
</span><span id="__span-0-768"><a id="__codelineno-0-768" name="__codelineno-0-768"></a><span class="sd"> Parameters:</span>
|
||||
</span><span id="__span-0-769"><a id="__codelineno-0-769" name="__codelineno-0-769"></a><span class="sd"> track: The repacked Track object.</span>
|
||||
</span><span id="__span-0-770"><a id="__codelineno-0-770" name="__codelineno-0-770"></a><span class="sd"> """</span>
|
||||
<span class="normal"><a href="#__codelineno-0-770">770</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-771">771</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-761"><a id="__codelineno-0-761" name="__codelineno-0-761"></a><span class="k">def</span><span class="w"> </span><span class="nf">on_track_multiplex</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">track</span><span class="p">:</span> <span class="n">AnyTrack</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="__span-0-762"><a id="__codelineno-0-762" name="__codelineno-0-762"></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="__span-0-763"><a id="__codelineno-0-763" name="__codelineno-0-763"></a><span class="sd"> Called immediately before unshackle multiplexes a Track into a Container.</span>
|
||||
</span><span id="__span-0-764"><a id="__codelineno-0-764" name="__codelineno-0-764"></a>
|
||||
</span><span id="__span-0-765"><a id="__codelineno-0-765" name="__codelineno-0-765"></a><span class="sd"> Note: Right now unshackle multiplexes only MKV containers. In the future</span>
|
||||
</span><span id="__span-0-766"><a id="__codelineno-0-766" name="__codelineno-0-766"></a><span class="sd"> unshackle can also call this when it multiplexes to other containers like</span>
|
||||
</span><span id="__span-0-767"><a id="__codelineno-0-767" name="__codelineno-0-767"></a><span class="sd"> MP4 with FFmpeg/mp4box.</span>
|
||||
</span><span id="__span-0-768"><a id="__codelineno-0-768" name="__codelineno-0-768"></a>
|
||||
</span><span id="__span-0-769"><a id="__codelineno-0-769" name="__codelineno-0-769"></a><span class="sd"> Parameters:</span>
|
||||
</span><span id="__span-0-770"><a id="__codelineno-0-770" name="__codelineno-0-770"></a><span class="sd"> track: The repacked Track object.</span>
|
||||
</span><span id="__span-0-771"><a id="__codelineno-0-771" name="__codelineno-0-771"></a><span class="sd"> """</span>
|
||||
</span></code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user