aboutsummaryrefslogtreecommitdiff
path: root/import/src/lib.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-01-24 18:47:19 +0100
committermetamuffin <metamuffin@disroot.org>2024-01-24 18:47:29 +0100
commit5c9b9e972987a7ac386a7a89d8f446bd46fb4d34 (patch)
treeacf57d2dc8398c89310d3a736b7c2a53e660f50f /import/src/lib.rs
parent27f4c3ff8f21282eac98583e2e1c41f7fec1f946 (diff)
downloadjellything-5c9b9e972987a7ac386a7a89d8f446bd46fb4d34.tar
jellything-5c9b9e972987a7ac386a7a89d8f446bd46fb4d34.tar.bz2
jellything-5c9b9e972987a7ac386a7a89d8f446bd46fb4d34.tar.zst
refactor asset system pt. 2
Diffstat (limited to 'import/src/lib.rs')
-rw-r--r--import/src/lib.rs32
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(())
+}