diff options
author | metamuffin <metamuffin@disroot.org> | 2024-01-24 18:47:19 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-01-24 18:47:29 +0100 |
commit | 5c9b9e972987a7ac386a7a89d8f446bd46fb4d34 (patch) | |
tree | acf57d2dc8398c89310d3a736b7c2a53e660f50f /import/src | |
parent | 27f4c3ff8f21282eac98583e2e1c41f7fec1f946 (diff) | |
download | jellything-5c9b9e972987a7ac386a7a89d8f446bd46fb4d34.tar jellything-5c9b9e972987a7ac386a7a89d8f446bd46fb4d34.tar.bz2 jellything-5c9b9e972987a7ac386a7a89d8f446bd46fb4d34.tar.zst |
refactor asset system pt. 2
Diffstat (limited to 'import/src')
-rw-r--r-- | import/src/lib.rs | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/import/src/lib.rs b/import/src/lib.rs index abb552f..9a099a8 100644 --- a/import/src/lib.rs +++ b/import/src/lib.rs @@ -11,6 +11,7 @@ pub mod trakt; use crate::tmdb::TmdbKind; use anyhow::{anyhow, bail, Context, Ok}; use async_recursion::async_recursion; +use base64::Engine; use futures::{stream::FuturesUnordered, StreamExt}; use jellybase::{ assetfed::AssetInner, @@ -21,8 +22,8 @@ use jellybase::{ }; use jellyclient::Session; use jellycommon::{ - ExtendedNode, ImportOptions, ImportSource, MediaInfo, Node, NodeKind, NodePrivate, NodePublic, - PeopleGroup, Rating, SourceTrack, TrackSource, + Asset, ExtendedNode, ImportOptions, ImportSource, MediaInfo, Node, NodeKind, NodePrivate, + NodePublic, PeopleGroup, Rating, SourceTrack, TrackSource, }; use jellymatroska::read::EbmlReader; use jellyremuxer::import::import_metadata; @@ -741,7 +742,7 @@ async fn import_remote( info!("loading federated node {id:?}"); let mut node = session.node(&id).await.context("fetching remote node")?; - let node_ext = session + let mut node_ext = session .node_extended(&id) .await .context("fetching extended remote node")?; @@ -759,13 +760,20 @@ async fn import_remote( drop(_permit); - let node = Node { + let mut node = Node { public: node.clone(), private: NodePrivate { id: None, source: track_sources, }, }; + make_opt_asset_federated(host, &mut node.public.backdrop)?; + make_opt_asset_federated(host, &mut node.public.poster)?; + for (_, g) in &mut node_ext.people { + for a in g { + make_opt_asset_federated(host, &mut a.person.headshot)?; + } + } debug!("adding {id}"); insert_node(&id, node.clone())?; @@ -784,3 +792,19 @@ async fn import_remote( Ok(()) } + +pub fn make_opt_asset_federated(host: &str, p: &mut Option<Asset>) -> anyhow::Result<()> { + if let Some(a) = p { + make_asset_federated(host, a)? + } + Ok(()) +} +pub fn make_asset_federated(host: &str, p: &mut Asset) -> anyhow::Result<()> { + let data = base64::engine::general_purpose::URL_SAFE.decode(&p.0)?; + *p = AssetInner::Federated { + host: host.to_owned(), + asset: data, + } + .ser(); + Ok(()) +} |