Files
jellytau/api/jellytau_lib/repository/online/struct.OnlineRepository.html
T

472 lines
131 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Online repository - fetches data from Jellyfin server via HTTP"><title>OnlineRepository in jellytau_lib::repository::online - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../../static.files/rustdoc-17e0aaed.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="jellytau_lib" data-themes="" data-resource-suffix="" data-rustdoc-version="1.97.1 (8bab26f4f 2026-07-14)" data-channel="1.97.1" data-search-js="search-fd9372ac.js" data-stringdex-js="stringdex-2da4960a.js" data-settings-js="settings-170eb4bf.js" ><script src="../../../static.files/storage-41dd4d93.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-fcd733ba.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-f7c3ffd8.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-044be391.svg"></head><body class="rustdoc struct"><a class="skip-main-content" href="#main-content">Skip to main content</a><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">OnlineRepository</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../jellytau_lib/index.html">jellytau_<wbr>lib</a><span class="version">0.11.0</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Online<wbr>Repository</a></h2><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.access_token" title="access_token">access_token</a></li><li><a href="#structfield.connectivity" title="connectivity">connectivity</a></li><li><a href="#structfield.http_client" title="http_client">http_client</a></li><li><a href="#structfield.server_url" title="server_url">server_url</a></li><li><a href="#structfield.user_id" title="user_id">user_id</a></li></ul><h3><a href="#implementations">Associated Functions</a></h3><ul class="block method"><li><a href="#method.new" title="new">new</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.auth_header" title="auth_header">auth_header</a></li><li><a href="#method.build_audio_only_stream_url_for_video" title="build_audio_only_stream_url_for_video">build_audio_only_stream_url_for_video</a></li><li><a href="#method.download_bytes" title="download_bytes">download_bytes</a></li><li><a href="#method.get_jray_actors" title="get_jray_actors">get_jray_actors</a></li><li><a href="#method.get_json" title="get_json">get_json</a></li><li><a href="#method.get_json_inner" title="get_json_inner">get_json_inner</a></li><li><a href="#method.get_stream_selection" title="get_stream_selection">get_stream_selection</a></li><li><a href="#method.get_video_stream_url" title="get_video_stream_url">get_video_stream_url</a></li><li><a href="#method.negotiate_playback" title="negotiate_playback">negotiate_playback</a></li><li><a href="#method.post_json" title="post_json">post_json</a></li><li><a href="#method.post_json_inner" title="post_json_inner">post_json_inner</a></li><li><a href="#method.post_json_response" title="post_json_response">post_json_response</a></li><li><a href="#method.post_json_response_inner" title="post_json_response_inner">post_json_response_inner</a></li><li><a href="#method.report_outcome" title="report_outcome">report_outcome</a></li><li><a href="#method.stop_transcode" title="stop_transcode">stop_transcode</a></li><li><a href="#method.user_id" title="user_id">user_id</a></li><li><a href="#method.with_connectivity" title="with_connectivity">with_connectivity</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-MediaRepository-for-OnlineRepository" title="MediaRepository">MediaRepository</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-RefUnwindSafe-for-OnlineRepository" title="!RefUnwindSafe">!RefUnwindSafe</a></li><li><a href="#impl-UnwindSafe-for-OnlineRepository" title="!UnwindSafe">!UnwindSafe</a></li><li><a href="#impl-Freeze-for-OnlineRepository" title="Freeze">Freeze</a></li><li><a href="#impl-Send-for-OnlineRepository" title="Send">Send</a></li><li><a href="#impl-Sync-for-OnlineRepository" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-OnlineRepository" title="Unpin">Unpin</a></li><li><a href="#impl-UnsafeUnpin-for-OnlineRepository" title="UnsafeUnpin">UnsafeUnpin</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T" title="Any">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T" title="Borrow&#60;T&#62;">Borrow&#60;T&#62;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T" title="BorrowMut&#60;T&#62;">BorrowMut&#60;T&#62;</a></li><li><a href="#impl-From%3CT%3E-for-T" title="From&#60;T&#62;">From&#60;T&#62;</a></li><li><a href="#impl-Instrument-for-T" title="Instrument">Instrument</a></li><li><a href="#impl-Into%3CU%3E-for-T" title="Into&#60;U&#62;">Into&#60;U&#62;</a></li><li><a href="#impl-PolicyExt-for-T" title="PolicyExt">PolicyExt</a></li><li><a href="#impl-Same-for-T" title="Same">Same</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T" title="TryFrom&#60;U&#62;">TryFrom&#60;U&#62;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T" title="TryInto&#60;U&#62;">TryInto&#60;U&#62;</a></li><li><a href="#impl-VZip%3CV%3E-for-T" title="VZip&#60;V&#62;">VZip&#60;V&#62;</a></li><li><a href="#impl-WithSubscriber-for-T" title="WithSubscriber">WithSubscriber</a></li></ul></section><div id="rustdoc-modnav"><h2><a href="index.html">In jellytau_<wbr>lib::<wbr>repository::<wbr>online</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content" tabindex="-1"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../../index.html">jellytau_lib</a>::<wbr><a href="../index.html">repository</a>::<wbr><a href="index.html">online</a></div><h1>Struct <span class="struct">Online<wbr>Repository</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../../src/jellytau_lib/repository/online.rs.html#182-191">Source</a> </span></div><pre class="rust item-decl"><code>pub struct OnlineRepository {
http_client: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;<a class="struct" href="../../jellyfin/http_client/struct.HttpClient.html" title="struct jellytau_lib::jellyfin::http_client::HttpClient">HttpClient</a>&gt;,
server_url: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
user_id: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
access_token: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
connectivity: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../../connectivity/struct.ConnectivityReporter.html" title="struct jellytau_lib::connectivity::ConnectivityReporter">ConnectivityReporter</a>&gt;,
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Online repository - fetches data from Jellyfin server via HTTP</p>
</div></details><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.http_client" class="structfield section-header"><a href="#structfield.http_client" class="anchor field">§</a><code>http_client: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;<a class="struct" href="../../jellyfin/http_client/struct.HttpClient.html" title="struct jellytau_lib::jellyfin::http_client::HttpClient">HttpClient</a>&gt;</code></span><span id="structfield.server_url" class="structfield section-header"><a href="#structfield.server_url" class="anchor field">§</a><code>server_url: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.user_id" class="structfield section-header"><a href="#structfield.user_id" class="anchor field">§</a><code>user_id: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.access_token" class="structfield section-header"><a href="#structfield.access_token" class="anchor field">§</a><code>access_token: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.connectivity" class="structfield section-header"><a href="#structfield.connectivity" class="anchor field">§</a><code>connectivity: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../../connectivity/struct.ConnectivityReporter.html" title="struct jellytau_lib::connectivity::ConnectivityReporter">ConnectivityReporter</a>&gt;</code></span><div class="docblock"><p>Reports the outcome of every server request to the connectivity monitor.
This is the source of truth for the offline/online banner. <code>None</code> in
tests / contexts where connectivity tracking isnt wired up.</p>
</div><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OnlineRepository" class="impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#193-1085">Source</a><a href="#impl-OnlineRepository" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OnlineRepository.html" title="struct jellytau_lib::repository::online::OnlineRepository">OnlineRepository</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.user_id" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#196-198">Source</a><h4 class="code-header">pub fn <a href="#method.user_id" class="fn">user_id</a>(&amp;self) -&gt; &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a></h4></section></summary><div class="docblock"><p>The signed-in user these requests are made as. Needed by the favourites
drain, which reads this users queued rows. TRACES: UR-069 | DR-120</p>
</div></details><section id="method.new" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#200-213">Source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(
http_client: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;<a class="struct" href="../../jellyfin/http_client/struct.HttpClient.html" title="struct jellytau_lib::jellyfin::http_client::HttpClient">HttpClient</a>&gt;,
server_url: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
user_id: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
access_token: <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
) -&gt; Self</h4></section><details class="toggle method-toggle" open><summary><section id="method.with_connectivity" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#217-220">Source</a><h4 class="code-header">pub fn <a href="#method.with_connectivity" class="fn">with_connectivity</a>(self, reporter: <a class="struct" href="../../connectivity/struct.ConnectivityReporter.html" title="struct jellytau_lib::connectivity::ConnectivityReporter">ConnectivityReporter</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Attach a connectivity reporter so server outcomes drive the reachability
state observed by the UI. See <code>report_outcome</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.report_outcome" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#230-250">Source</a><h4 class="code-header">async fn <a href="#method.report_outcome" class="fn">report_outcome</a>&lt;T&gt;(&amp;self, result: &amp;<a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;)</h4></section></summary><div class="docblock"><p>Feed a request outcome into the connectivity monitor.</p>
<p>Classification (matches docs/architecture/07-connectivity.md):</p>
<ul>
<li><code>Ok</code> / <code>Authentication</code> / <code>NotFound</code> / <code>Server</code> → the server answered,
so it is reachable → <code>report_success</code> (instant recovery).</li>
<li><code>Network</code> → connection-level failure → <code>report_network_failure</code>
(subject to the time-window debounce before going offline).</li>
<li><code>Database</code> → not a server signal → ignored.</li>
</ul>
</div></details><details class="toggle method-toggle" open><summary><section id="method.auth_header" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#253-255">Source</a><h4 class="code-header">fn <a href="#method.auth_header" class="fn">auth_header</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class="docblock"><p>Build authorization header</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.download_bytes" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#259-290">Source</a><h4 class="code-header">pub async fn <a href="#method.download_bytes" class="fn">download_bytes</a>(&amp;self, url: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.u8.html">u8</a>&gt;, <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</h4></section></summary><div class="docblock"><p>Download raw bytes from a URL using the shared authenticated HTTP client.
Used by thumbnail cache to download images with proper auth and connection reuse.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_jray_actors" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#296-312">Source</a><h4 class="code-header">pub async fn <a href="#method.get_jray_actors" class="fn">get_jray_actors</a>(
&amp;self,
item_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
t: <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.f64.html">f64</a>,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.JRayActor.html" title="struct jellytau_lib::repository::online::JRayActor">JRayActor</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section></summary><div class="docblock"><p>Query the JRay plugin for the actors on screen at time <code>t</code> (seconds) in
the given item. Returns an empty list when the plugin isnt installed or
has no truth data for the item (HTTP 404), so callers can treat “no JRay”
and “nobody on screen” identically. Other failures propagate.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_json" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#315-330">Source</a><h4 class="code-header">async fn <a href="#method.get_json" class="fn">get_json</a>&lt;T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde_core/1.0.228/serde_core/de/trait.Deserialize.html" title="trait serde_core::de::Deserialize">Deserialize</a>&lt;'de&gt;&gt;(
&amp;self,
endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section></summary><div class="docblock"><p>Make authenticated GET request</p>
</div></details><section id="method.get_json_inner" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#332-396">Source</a><h4 class="code-header">async fn <a href="#method.get_json_inner" class="fn">get_json_inner</a>&lt;T: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde_core/1.0.228/serde_core/de/trait.Deserialize.html" title="trait serde_core::de::Deserialize">Deserialize</a>&lt;'de&gt;&gt;(
&amp;self,
endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section><details class="toggle method-toggle" open><summary><section id="method.post_json" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#399-403">Source</a><h4 class="code-header">async fn <a href="#method.post_json" class="fn">post_json</a>&lt;T: <a class="trait" href="https://docs.rs/serde_core/1.0.228/serde_core/ser/trait.Serialize.html" title="trait serde_core::ser::Serialize">Serialize</a>&gt;(
&amp;self,
endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
body: <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.reference.html">&amp;T</a>,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section></summary><div class="docblock"><p>Make authenticated POST request</p>
</div></details><section id="method.post_json_inner" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#405-446">Source</a><h4 class="code-header">async fn <a href="#method.post_json_inner" class="fn">post_json_inner</a>&lt;T: <a class="trait" href="https://docs.rs/serde_core/1.0.228/serde_core/ser/trait.Serialize.html" title="trait serde_core::ser::Serialize">Serialize</a>&gt;(
&amp;self,
endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
body: <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.reference.html">&amp;T</a>,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section><details class="toggle method-toggle" open><summary><section id="method.post_json_response" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#449-457">Source</a><h4 class="code-header">async fn <a href="#method.post_json_response" class="fn">post_json_response</a>&lt;T: <a class="trait" href="https://docs.rs/serde_core/1.0.228/serde_core/ser/trait.Serialize.html" title="trait serde_core::ser::Serialize">Serialize</a>, R: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde_core/1.0.228/serde_core/de/trait.Deserialize.html" title="trait serde_core::de::Deserialize">Deserialize</a>&lt;'de&gt;&gt;(
&amp;self,
endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
body: <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.reference.html">&amp;T</a>,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;R, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section></summary><div class="docblock"><p>Make authenticated POST request and return response</p>
</div></details><section id="method.post_json_response_inner" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#459-520">Source</a><h4 class="code-header">async fn <a href="#method.post_json_response_inner" class="fn">post_json_response_inner</a>&lt;T: <a class="trait" href="https://docs.rs/serde_core/1.0.228/serde_core/ser/trait.Serialize.html" title="trait serde_core::ser::Serialize">Serialize</a>, R: for&lt;'de&gt; <a class="trait" href="https://docs.rs/serde_core/1.0.228/serde_core/de/trait.Deserialize.html" title="trait serde_core::de::Deserialize">Deserialize</a>&lt;'de&gt;&gt;(
&amp;self,
endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
body: <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.reference.html">&amp;T</a>,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;R, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section><details class="toggle method-toggle" open><summary><section id="method.stop_transcode" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#531-562">Source</a><h4 class="code-header">async fn <a href="#method.stop_transcode" class="fn">stop_transcode</a>(&amp;self, play_session_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>)</h4></section></summary><div class="docblock"><p>Ask the server to tear down a transcode this device started.</p>
<p>Best-effort and deliberately un-retried: it runs on the path that opens a
replacement stream, so a slow or failed stop must not delay playback. The
worst case if it does fail is the job Jellyfin would have reaped on its
own idle timer anyway — the new stream still has its own session id, so it
no longer collides with the old one.</p>
<p>TRACES: UR-074 | DR-177</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_video_stream_url" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#592-695">Source</a><h4 class="code-header">pub async fn <a href="#method.get_video_stream_url" class="fn">get_video_stream_url</a>(
&amp;self,
item_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
media_source_id: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>&gt;,
audio_stream_index: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.i32.html">i32</a>&gt;,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section></summary><div class="docblock"><p>Get a video stream URL (initial play, resume, transcoded seeking,
audio-track switching).</p>
<p>Returns an HLS master playlist (<code>/Videos/{id}/master.m3u8</code>) transcoded to
h264/aac. HLS is used rather than a progressive <code>stream.mp4</code> because the
HTML5 <code>&lt;video&gt;</code> element (via HLS.js) starts playing within seconds and can
seek within the stream, whereas a progressive MP4 transcode of HEVC source
forces the server to transcode the whole file before playback can begin —
which manifests as playback never starting.</p>
<p><strong>There is deliberately no start-position parameter.</strong> A playlist covers
the whole item and asking for segment N <em>is</em> the seek, so a position would
be redundant — and actively fatal: Jellyfin builds every segment URI by
echoing this playlists query string into it, while its segment handler
rejects <code>StartTimeTicks &gt; 0</code> outright (<code>ArgumentException</code><code>400</code>). One
resume position here therefore 400s every segment of the stream, which
presents as a resumed episode that simply never plays while the same
episode from the beginning is fine. Resume by seeking the player once it
has loaded. (The progressive <code>/Audio/universal</code> builder below has no
segments and keeps its <code>StartTimeTicks</code>.)</p>
<p>The stream is built against the current <a href="fn.effective_streaming_quality.html" title="fn jellytau_lib::repository::online::effective_streaming_quality"><code>effective_streaming_quality</code></a>
ceiling (the per-playback override if one is set, else the device default):
<code>MaxStreamingBitrate</code>/<code>VideoBitrate</code>/<code>AudioBitrate</code>, plus a <code>MaxHeight</code>
that suits the budget. <code>Original</code> keeps the historical 20/18 Mbps
allowance, which is a transcode ceiling rather than a user-facing limit.</p>
<p>TRACES: UR-004, UR-074 | DR-140, DR-162, DR-177, DR-181 | UT-130, UT-156, UT-173, UT-182</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.build_audio_only_stream_url_for_video" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#718-771">Source</a><h4 class="code-header">pub async fn <a href="#method.build_audio_only_stream_url_for_video" class="fn">build_audio_only_stream_url_for_video</a>(
&amp;self,
item_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
media_source_id: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>&gt;,
start_time_seconds: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.f64.html">f64</a>&gt;,
audio_stream_index: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.i32.html">i32</a>&gt;,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section></summary><div class="docblock"><p>Get an <strong>audio-only</strong> stream URL for a <em>video</em> item, for the
background-audio handoff (UR-040).</p>
<p>TRACES: UR-040 | JA-032, DR-140 | UT-059, UT-130</p>
<p>This deliberately targets <code>/Audio/{id}/universal</code>, NOT the video stream:
the server extracts/transcodes only the items audio track and streams
pure audio bytes — no video frames reach the device, so there is no client
video decode while backgrounded. Do NOT “optimize” this to reuse the
<code>/Videos/.../master.m3u8</code> URL: that would keep the device decoding video,
defeating the entire point of the feature.</p>
<p><code>AudioStreamIndex</code> carries the users currently-selected audio track over
from the video player; <code>StartTimeTicks</code> resumes at the handoff position.
<code>universal</code> lets the server pick direct-play vs transcode per codec/device.</p>
<p>The stream is a <strong>progressive</strong> container (mp3 over plain HTTP), NOT HLS:
ExoPlayer plays this natively, whereas an HLS/<code>ts</code> transcode on the
<code>/universal</code> endpoint (no <code>.m3u8</code> in the path) fails its progressive
loader with <code>ERROR_CODE_PARSING_CONTAINER_UNSUPPORTED</code>. mp3 is universally
decodable and supports mid-stream <code>StartTimeTicks</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.negotiate_playback" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#782-935">Source</a><h4 class="code-header">async fn <a href="#method.negotiate_playback" class="fn">negotiate_playback</a>(
&amp;self,
item_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;(<a class="struct" href="struct.NegotiatedSource.html" title="struct jellytau_lib::repository::online::NegotiatedSource">NegotiatedSource</a>, <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>), <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section></summary><div class="docblock"><p>Ask the server what it will do with this item, under our device profile
and the ceiling currently in force.</p>
<p>The single place the device profile is built and POSTed. Both
<a href="struct.OnlineRepository.html#method.get_playback_info" title="method jellytau_lib::repository::online::OnlineRepository::get_playback_info"><code>get_playback_info</code></a> (the legacy shape) and
<code>get_stream_selection</code> (the DR-225 contract) go through it, so the
profile they negotiate under cannot drift apart.</p>
<p>TRACES: UR-004, UR-074, UR-079 | DR-225, DR-228</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_stream_selection" class="method"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#952-1084">Source</a><h4 class="code-header">pub async fn <a href="#method.get_stream_selection" class="fn">get_stream_selection</a>(
&amp;self,
item_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
media_source_id: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>&gt;,
audio_stream_index: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.i32.html">i32</a>&gt;,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../stream_selection/struct.StreamSelection.html" title="struct jellytau_lib::repository::stream_selection::StreamSelection">StreamSelection</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;</h4></section></summary><div class="docblock"><p>Decide what stream to play, and describe it fully enough that no consumer
has to guess.</p>
<p>This replaces <code>get_video_stream_url</code>s “always build an HLS transcode”
with an actual decision. Measured against the development server, that
distinction is worth 85% of plays on Android (ExoPlayer decodes hevc, and
the sampled library is ~80% hevc) and about 7% on Linux, where the
WebKitGTK profile can only claim h264 until the native-video work lands.
The Linux figure is a property of the renderer, not of this code.</p>
<p>The returned <a href="../stream_selection/struct.StreamSelection.html" title="struct jellytau_lib::repository::stream_selection::StreamSelection"><code>StreamSelection</code></a> carries the transport explicitly so the
frontend stops testing the URL for <code>.m3u8</code>, and the quality ladder for
<em>this</em> source so the picker stops offering rungs that mean nothing for it.</p>
<p>TRACES: UR-070, UR-079 | DR-225, DR-226, DR-227, DR-228 | UT-213</p>
</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-MediaRepository-for-OnlineRepository" class="impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#1670-2986">Source</a><a href="#impl-MediaRepository-for-OnlineRepository" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.MediaRepository.html" title="trait jellytau_lib::repository::MediaRepository">MediaRepository</a> for <a class="struct" href="struct.OnlineRepository.html" title="struct jellytau_lib::repository::online::OnlineRepository">OnlineRepository</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.get_item" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#1734-1741">Source</a><a href="#method.get_item" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_item" class="fn">get_item</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class="docblock"><p>Fetch one item with every field the detail and player screens need.</p>
<p>The <code>Fields=</code> list is the load-bearing part: Jellyfin omits these unless
they are named. <code>MediaStreams</code> is what makes the items <strong>audio and
subtitle tracks</strong> knowable at all — there is no separate “tracks”
endpoint, so this single call is how the player learns which audio tracks
an item offers (<code>to_media_item</code> maps them, and the players selector
filters them by <code>kind</code>). <code>People</code> is likewise how <strong>cast and crew</strong> are
obtained.</p>
<p>TRACES: UR-021, UR-035 | IR-016, IR-022, JA-005, JA-009</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_resume_items" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#1765-1786">Source</a><a href="#method.get_resume_items" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_resume_items" class="fn">get_resume_items</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
parent_id: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>&gt;,
limit: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class="docblock"><p>Continue Watching: the items this user has started and not finished.</p>
<p><code>/Users/{uid}/Items/Resume</code> is the server-side answer to both “what goes
in the Continue Watching row” and “where was this left off” — each item
carries its own <code>UserData.PlaybackPositionTicks</code>, which is why <code>UserData</code>
is named in <code>Fields=</code> rather than left to the servers default field set.</p>
<p>TRACES: UR-019, UR-023 | IR-024, JA-013, JA-015</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_next_up_episodes" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#1792-1805">Source</a><a href="#method.get_next_up_episodes" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_next_up_episodes" class="fn">get_next_up_episodes</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
series_id: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>&gt;,
limit: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class="docblock"><p>“Next Up”: the episode that follows the ones this user has finished,
per series — the Shows-scoped counterpart to Continue Watching.</p>
<p>TRACES: UR-023, UR-059 | IR-024, JA-014</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_resume_movies" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#1970-1983">Source</a><a href="#method.get_resume_movies" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_resume_movies" class="fn">get_resume_movies</a>&lt;'life0, 'async_trait&gt;(
&amp;'life0 self,
limit: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,</div></h4></section></summary><div class="docblock"><p>Continue Watching, narrowed to movies — the home screens movie row and
the movie librarys own hero both want the unfinished films without the
episodes mixed in.</p>
<p>TRACES: UR-019, UR-034 | IR-024, JA-013, JA-015</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.search" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2053-2095">Source</a><a href="#method.search" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.search" class="fn">search</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
query: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
options: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../types/struct.SearchOptions.html" title="struct jellytau_lib::repository::types::SearchOptions">SearchOptions</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.SearchResult.html" title="struct jellytau_lib::repository::types::SearchResult">SearchResult</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class="docblock"><p>Search every library the user can see.</p>
<p><code>Recursive=true</code> with no <code>ParentId</code> is what makes this cross-library
rather than folder-scoped; a caller narrowing the search passes the item
types through <code>SearchOptions</code> (already expanded from an opaque
<code>SearchScope</code> on this side of the boundary).</p>
<p>TRACES: UR-008 | IR-010, JA-006</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_video_download_url" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2464-2564">Source</a><a href="#method.get_video_download_url" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_video_download_url" class="fn">get_video_download_url</a>(
&amp;self,
item_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
quality: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
media_source_id: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>&gt;,
source_audio_codec: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class="docblock"><p>TRACES: UR-071 | DR-123</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_favorites" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2576-2592">Source</a><a href="#method.get_favorites" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_favorites" class="fn">get_favorites</a>&lt;'life0, 'async_trait&gt;(
&amp;'life0 self,
scope: <a class="enum" href="../types/enum.SearchScope.html" title="enum jellytau_lib::repository::types::SearchScope">SearchScope</a>,
options: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../types/struct.GetItemsOptions.html" title="struct jellytau_lib::repository::types::GetItemsOptions">GetItemsOptions</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.SearchResult.html" title="struct jellytau_lib::repository::types::SearchResult">SearchResult</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,</div></h4></section></summary><div class="docblock"><p>TRACES: UR-067 | DR-115, JA-033 | UT-100</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.unmark_favorite" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2600-2639">Source</a><a href="#method.unmark_favorite" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.unmark_favorite" class="fn">unmark_favorite</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class="docblock"><p>Un-favourite an item: the same <code>/Users/{uid}/FavoriteItems/{id}</code> resource
as <a href="struct.OnlineRepository.html#method.mark_favorite" title="method jellytau_lib::repository::online::OnlineRepository::mark_favorite"><code>Self::mark_favorite</code></a>, removed rather than posted. Written out by
hand rather than through <code>post_json</code> because it is the one favourite call
that needs <code>DELETE</code>.</p>
<p>TRACES: UR-017 | JA-018, DR-021</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.clear_watch_history" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2646-2685">Source</a><a href="#method.clear_watch_history" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.clear_watch_history" class="fn">clear_watch_history</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class="docblock"><p><code>DELETE /Users/{userId}/PlayedItems/{itemId}</code> — Jellyfins “mark
unplayed”, which also zeroes the resume position. On a folder (series,
season) the server applies it recursively to the children.</p>
<p>TRACES: UR-064 | DR-106, JA-033</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.mark_played" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2691-2731">Source</a><a href="#method.mark_played" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.mark_played" class="fn">mark_played</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class="docblock"><p><code>POST /Users/{userId}/PlayedItems/{itemId}</code> — the mirror image of
<code>clear_watch_history</code>.</p>
<p>TRACES: UR-025 | DR-131 | JA-035</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_person" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2740-2748">Source</a><a href="#method.get_person" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_person" class="fn">get_person</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
person_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class="docblock"><p>A single Person item (actor, director, …) by id.</p>
<p>Jellyfin models people as ordinary items, so this is the plain item
endpoint rather than anything under <code>/Persons</code>; the cast entries returned
on an items <code>People</code> field carry the ids this is called with.</p>
<p>TRACES: UR-035, UR-036 | IR-022, JA-030</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_items_by_person" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2753-2784">Source</a><a href="#method.get_items_by_person" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_items_by_person" class="fn">get_items_by_person</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
person_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
options: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../types/struct.GetItemsOptions.html" title="struct jellytau_lib::repository::types::GetItemsOptions">GetItemsOptions</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.SearchResult.html" title="struct jellytau_lib::repository::types::SearchResult">SearchResult</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class="docblock"><p>A persons filmography — every item they are credited on.</p>
<p>TRACES: UR-036 | IR-022, JA-031</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_libraries" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#1671-1702">Source</a><a href="#method.get_libraries" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_libraries" class="fn">get_libraries</a>&lt;'life0, 'async_trait&gt;(
&amp;'life0 self,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.Library.html" title="struct jellytau_lib::repository::types::Library">Library</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,</div></h4></section></summary><div class='docblock'>Get all libraries <a href="../trait.MediaRepository.html#tymethod.get_libraries">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_items" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#1704-1721">Source</a><a href="#method.get_items" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_items" class="fn">get_items</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
parent_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
options: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../types/struct.GetItemsOptions.html" title="struct jellytau_lib::repository::types::GetItemsOptions">GetItemsOptions</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.SearchResult.html" title="struct jellytau_lib::repository::types::SearchResult">SearchResult</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get items in a library or parent <a href="../trait.MediaRepository.html#tymethod.get_items">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_latest_items" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#1743-1755">Source</a><a href="#method.get_latest_items" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_latest_items" class="fn">get_latest_items</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
parent_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
limit: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get latest items in a library <a href="../trait.MediaRepository.html#tymethod.get_latest_items">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_recently_played_audio" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#1807-1937">Source</a><a href="#method.get_recently_played_audio" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_recently_played_audio" class="fn">get_recently_played_audio</a>&lt;'life0, 'async_trait&gt;(
&amp;'life0 self,
limit: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,</div></h4></section></summary><div class='docblock'>Get recently played audio</div></details><details class="toggle method-toggle" open><summary><section id="method.get_rediscover_albums" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#1939-1963">Source</a><a href="#method.get_rediscover_albums" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_rediscover_albums" class="fn">get_rediscover_albums</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
parent_id: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>&gt;,
limit: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get albums the user has played, but not recently (“rediscover” / havent
listened to in a while). Returns albums sorted by least-recently played
first, optionally restricted to a parent library.</div></details><details class="toggle method-toggle" open><summary><section id="method.get_genres" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#1985-2043">Source</a><a href="#method.get_genres" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_genres" class="fn">get_genres</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
parent_id: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.Genre.html" title="struct jellytau_lib::repository::types::Genre">Genre</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get genres</div></details><details class="toggle method-toggle" open><summary><section id="method.get_playback_info" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2097-2191">Source</a><a href="#method.get_playback_info" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_playback_info" class="fn">get_playback_info</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.PlaybackInfo.html" title="struct jellytau_lib::repository::types::PlaybackInfo">PlaybackInfo</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get playback info for streaming <a href="../trait.MediaRepository.html#tymethod.get_playback_info">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_audio_stream_url" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2193-2200">Source</a><a href="#method.get_audio_stream_url" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_audio_stream_url" class="fn">get_audio_stream_url</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get audio stream URL for a track <a href="../trait.MediaRepository.html#tymethod.get_audio_stream_url">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_audio_only_stream_url_for_video" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2202-2216">Source</a><a href="#method.get_audio_only_stream_url_for_video" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_audio_only_stream_url_for_video" class="fn">get_audio_only_stream_url_for_video</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
&amp;'life0 self,
item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
media_source_id: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>&gt;,
start_time_seconds: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.f64.html">f64</a>&gt;,
audio_stream_index: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.i32.html">i32</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,</div></h4></section></summary><div class='docblock'>Get an audio-only stream URL for a <em>video</em> item (background-audio handoff). <a href="../trait.MediaRepository.html#tymethod.get_audio_only_stream_url_for_video">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_live_tv_channels" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2218-2231">Source</a><a href="#method.get_live_tv_channels" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_live_tv_channels" class="fn">get_live_tv_channels</a>&lt;'life0, 'async_trait&gt;(
&amp;'life0 self,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.MediaItem.html" title="struct jellytau_lib::repository::types::MediaItem">MediaItem</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,</div></h4></section></summary><div class='docblock'>Get Live TV channels (broadcast / IPTV) for browsing.</div></details><details class="toggle method-toggle" open><summary><section id="method.get_channels" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2233-2248">Source</a><a href="#method.get_channels" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_channels" class="fn">get_channels</a>&lt;'life0, 'async_trait&gt;(
&amp;'life0 self,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.SearchResult.html" title="struct jellytau_lib::repository::types::SearchResult">SearchResult</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,</div></h4></section></summary><div class='docblock'>Get the root list of plugin “Channels” (Jellyfin Channels feature).
Drill-down into a channel reuses <code>get_items(channel_id, ...)</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.open_live_stream" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2250-2341">Source</a><a href="#method.open_live_stream" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.open_live_stream" class="fn">open_live_stream</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.LiveStreamInfo.html" title="struct jellytau_lib::repository::types::LiveStreamInfo">LiveStreamInfo</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Open a live stream (Live TV channel or live channel item) for playback. <a href="../trait.MediaRepository.html#tymethod.open_live_stream">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.report_playback_start" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2343-2365">Source</a><a href="#method.report_playback_start" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.report_playback_start" class="fn">report_playback_start</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
position_ticks: <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.i64.html">i64</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Report playback start <a href="../trait.MediaRepository.html#tymethod.report_playback_start">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.report_playback_progress" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2367-2387">Source</a><a href="#method.report_playback_progress" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.report_playback_progress" class="fn">report_playback_progress</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
position_ticks: <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.i64.html">i64</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Report playback progress <a href="../trait.MediaRepository.html#tymethod.report_playback_progress">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.report_playback_stopped" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2389-2407">Source</a><a href="#method.report_playback_stopped" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.report_playback_stopped" class="fn">report_playback_stopped</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
position_ticks: <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.i64.html">i64</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Report playback stopped <a href="../trait.MediaRepository.html#tymethod.report_playback_stopped">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_image_url" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2409-2448">Source</a><a href="#method.get_image_url" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_image_url" class="fn">get_image_url</a>(
&amp;self,
item_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
image_type: <a class="enum" href="../types/enum.ImageType.html" title="enum jellytau_lib::repository::types::ImageType">ImageType</a>,
options: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../types/struct.ImageOptions.html" title="struct jellytau_lib::repository::types::ImageOptions">ImageOptions</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Get image URL (synchronous - just constructs URL)</div></details><details class="toggle method-toggle" open><summary><section id="method.get_subtitle_url" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2450-2461">Source</a><a href="#method.get_subtitle_url" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_subtitle_url" class="fn">get_subtitle_url</a>(
&amp;self,
item_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
media_source_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
stream_index: <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.i32.html">i32</a>,
format: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class='docblock'>Get subtitle URL (synchronous - just constructs URL)
Called by frontend via Tauri invoke (getSubtitleUrl in VideoPlayer.svelte)</div></details><details class="toggle method-toggle" open><summary><section id="method.mark_favorite" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2566-2573">Source</a><a href="#method.mark_favorite" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.mark_favorite" class="fn">mark_favorite</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Mark item as favorite</div></details><details class="toggle method-toggle" open><summary><section id="method.get_similar_items" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2786-2808">Source</a><a href="#method.get_similar_items" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_similar_items" class="fn">get_similar_items</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
item_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
limit: <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.usize.html">usize</a>&gt;,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.SearchResult.html" title="struct jellytau_lib::repository::types::SearchResult">SearchResult</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get similar/related items for a movie or show <a href="../trait.MediaRepository.html#tymethod.get_similar_items">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.create_playlist" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2812-2830">Source</a><a href="#method.create_playlist" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.create_playlist" class="fn">create_playlist</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
&amp;'life0 self,
name: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
item_ids: &amp;'life2 [<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>],
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../types/struct.PlaylistCreatedResult.html" title="struct jellytau_lib::repository::types::PlaylistCreatedResult">PlaylistCreatedResult</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,</div></h4></section></summary><div class='docblock'>Create a new playlist on the server <a href="../trait.MediaRepository.html#tymethod.create_playlist">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.delete_playlist" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2832-2862">Source</a><a href="#method.delete_playlist" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.delete_playlist" class="fn">delete_playlist</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
playlist_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Delete a playlist <a href="../trait.MediaRepository.html#tymethod.delete_playlist">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.rename_playlist" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2864-2872">Source</a><a href="#method.rename_playlist" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.rename_playlist" class="fn">rename_playlist</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
&amp;'life0 self,
playlist_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
name: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,</div></h4></section></summary><div class='docblock'>Rename a playlist <a href="../trait.MediaRepository.html#tymethod.rename_playlist">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.get_playlist_items" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2874-2895">Source</a><a href="#method.get_playlist_items" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.get_playlist_items" class="fn">get_playlist_items</a>&lt;'life0, 'life1, 'async_trait&gt;(
&amp;'life0 self,
playlist_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../types/struct.PlaylistEntry.html" title="struct jellytau_lib::repository::types::PlaylistEntry">PlaylistEntry</a>&gt;, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,</div></h4></section></summary><div class='docblock'>Get playlist items with PlaylistItemId (needed for remove/reorder) <a href="../trait.MediaRepository.html#tymethod.get_playlist_items">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.add_to_playlist" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2897-2919">Source</a><a href="#method.add_to_playlist" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.add_to_playlist" class="fn">add_to_playlist</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
&amp;'life0 self,
playlist_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
item_ids: &amp;'life2 [<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>],
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,</div></h4></section></summary><div class='docblock'>Add items to a playlist <a href="../trait.MediaRepository.html#tymethod.add_to_playlist">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.remove_from_playlist" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2921-2968">Source</a><a href="#method.remove_from_playlist" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.remove_from_playlist" class="fn">remove_from_playlist</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
&amp;'life0 self,
playlist_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
entry_ids: &amp;'life2 [<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>],
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,</div></h4></section></summary><div class='docblock'>Remove items from a playlist using entry IDs (PlaylistItemId, NOT media item IDs) <a href="../trait.MediaRepository.html#tymethod.remove_from_playlist">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.move_playlist_item" class="method trait-impl"><a class="src rightside" href="../../../src/jellytau_lib/repository/online.rs.html#2970-2985">Source</a><a href="#method.move_playlist_item" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.MediaRepository.html#tymethod.move_playlist_item" class="fn">move_playlist_item</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
&amp;'life0 self,
playlist_id: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
item_id: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.str.html">str</a>,
new_index: <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.u32.html">u32</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.97.1/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.unit.html">()</a>, <a class="enum" href="../types/enum.RepoError.html" title="enum jellytau_lib::repository::types::RepoError">RepoError</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<div class="where">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,</div></h4></section></summary><div class='docblock'>Move a playlist item to a new position <a href="../trait.MediaRepository.html#tymethod.move_playlist_item">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-OnlineRepository" class="impl"><a href="#impl-Freeze-for-OnlineRepository" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.OnlineRepository.html" title="struct jellytau_lib::repository::online::OnlineRepository">OnlineRepository</a></h3></section><section id="impl-RefUnwindSafe-for-OnlineRepository" class="impl"><a href="#impl-RefUnwindSafe-for-OnlineRepository" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/1.97.1/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.OnlineRepository.html" title="struct jellytau_lib::repository::online::OnlineRepository">OnlineRepository</a></h3></section><section id="impl-Send-for-OnlineRepository" class="impl"><a href="#impl-Send-for-OnlineRepository" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.OnlineRepository.html" title="struct jellytau_lib::repository::online::OnlineRepository">OnlineRepository</a></h3></section><section id="impl-Sync-for-OnlineRepository" class="impl"><a href="#impl-Sync-for-OnlineRepository" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.OnlineRepository.html" title="struct jellytau_lib::repository::online::OnlineRepository">OnlineRepository</a></h3></section><section id="impl-Unpin-for-OnlineRepository" class="impl"><a href="#impl-Unpin-for-OnlineRepository" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.OnlineRepository.html" title="struct jellytau_lib::repository::online::OnlineRepository">OnlineRepository</a></h3></section><section id="impl-UnsafeUnpin-for-OnlineRepository" class="impl"><a href="#impl-UnsafeUnpin-for-OnlineRepository" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.UnsafeUnpin.html" title="trait core::marker::UnsafeUnpin">UnsafeUnpin</a> for <a class="struct" href="struct.OnlineRepository.html" title="struct jellytau_lib::repository::online::OnlineRepository">OnlineRepository</a></h3></section><section id="impl-UnwindSafe-for-OnlineRepository" class="impl"><a href="#impl-UnwindSafe-for-OnlineRepository" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/1.97.1/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.OnlineRepository.html" title="struct jellytau_lib::repository::online::OnlineRepository">OnlineRepository</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/any.rs.html#141">Source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/any.rs.html#142">Source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.97.1/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.97.1/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/1.97.1/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/borrow.rs.html#212">Source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/borrow.rs.html#214">Source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.97.1/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.97.1/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/borrow.rs.html#221">Source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/borrow.rs.html#222">Source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.97.1/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.97.1/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.97.1/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#786">Source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#789">Source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.97.1/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Instrument-for-T" class="impl"><a href="#impl-Instrument-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; Instrument for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.instrument" class="method trait-impl"><a href="#method.instrument" class="anchor">§</a><h4 class="code-header">fn <a class="fn">instrument</a>(self, span: Span) -&gt; Instrumented&lt;Self&gt;</h4></section></summary><div class='docblock'>Instruments this type with the provided [<code>Span</code>], returning an
<code>Instrumented</code> wrapper. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.in_current_span" class="method trait-impl"><a href="#method.in_current_span" class="anchor">§</a><h4 class="code-header">fn <a class="fn">in_current_span</a>(self) -&gt; Instrumented&lt;Self&gt;</h4></section></summary><div class='docblock'>Instruments this type with the <a href="super::Span::current()">current</a> <a href="crate::Span"><code>Span</code></a>, returning an
<code>Instrumented</code> wrapper. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#768-770">Source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#778">Source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.97.1/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
<p>That is, this conversion is whatever the implementation of
<code><a href="https://doc.rust-lang.org/1.97.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-PolicyExt-for-T" class="impl"><a href="#impl-PolicyExt-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; PolicyExt for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.97.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.and" class="method trait-impl"><a href="#method.and" class="anchor">§</a><h4 class="code-header">fn <a class="fn">and</a>&lt;P, B, E&gt;(self, other: P) -&gt; And&lt;T, P&gt;<div class="where">where
T: Policy&lt;B, E&gt;,
P: Policy&lt;B, E&gt;,</div></h4></section></summary><div class='docblock'>Create a new <code>Policy</code> that returns [<code>Action::Follow</code>] only if <code>self</code> and <code>other</code> return
<code>Action::Follow</code>. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.or" class="method trait-impl"><a href="#method.or" class="anchor">§</a><h4 class="code-header">fn <a class="fn">or</a>&lt;P, B, E&gt;(self, other: P) -&gt; Or&lt;T, P&gt;<div class="where">where
T: Policy&lt;B, E&gt;,
P: Policy&lt;B, E&gt;,</div></h4></section></summary><div class='docblock'>Create a new <code>Policy</code> that returns [<code>Action::Follow</code>] if either <code>self</code> or <code>other</code> returns
<code>Action::Follow</code>. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Same-for-T" class="impl"><a class="src rightside" href="https://docs.rs/typenum/1.19.0/src/typenum/type_operators.rs.html#34">Source</a><a href="#impl-Same-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/typenum/1.19.0/typenum/type_operators/trait.Same.html" title="trait typenum::type_operators::Same">Same</a> for T</h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Output" class="associatedtype trait-impl"><a class="src rightside" href="https://docs.rs/typenum/1.19.0/src/typenum/type_operators.rs.html#35">Source</a><a href="#associatedtype.Output" class="anchor">§</a><h4 class="code-header">type <a href="https://docs.rs/typenum/1.19.0/typenum/type_operators/trait.Same.html#associatedtype.Output" class="associatedtype">Output</a> = T</h4></section></summary><div class='docblock'>Should always be <code>Self</code></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#828-830">Source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#832">Source</a><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#835">Source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#812-814">Source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#816">Source</a><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.97.1/src/core/convert/mod.rs.html#819">Source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.97.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-T" class="impl"><a href="#impl-VZip%3CV%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;V, T&gt; VZip&lt;V&gt; for T<div class="where">where
V: MultiLane&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -&gt; V</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-WithSubscriber-for-T" class="impl"><a href="#impl-WithSubscriber-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; WithSubscriber for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.with_subscriber" class="method trait-impl"><a href="#method.with_subscriber" class="anchor">§</a><h4 class="code-header">fn <a class="fn">with_subscriber</a>&lt;S&gt;(self, subscriber: S) -&gt; WithDispatch&lt;Self&gt;<div class="where">where
S: <a class="trait" href="https://doc.rust-lang.org/1.97.1/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;Dispatch&gt;,</div></h4></section></summary><div class='docblock'>Attaches the provided <a href="super::Subscriber"><code>Subscriber</code></a> to this type, returning a
[<code>WithDispatch</code>] wrapper. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.with_current_subscriber" class="method trait-impl"><a href="#method.with_current_subscriber" class="anchor">§</a><h4 class="code-header">fn <a class="fn">with_current_subscriber</a>(self) -&gt; WithDispatch&lt;Self&gt;</h4></section></summary><div class='docblock'>Attaches the current <a href="dispatcher#setting-the-default-subscriber">default</a> <a href="super::Subscriber"><code>Subscriber</code></a> to this type, returning a
[<code>WithDispatch</code>] wrapper. <a>Read more</a></div></details></div></details></div></section></div></main></body></html>