aboutsummaryrefslogtreecommitdiff
path: root/server/src/routes/stream.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/routes/stream.rs')
-rw-r--r--server/src/routes/stream.rs25
1 files changed, 17 insertions, 8 deletions
diff --git a/server/src/routes/stream.rs b/server/src/routes/stream.rs
index 4b3d02e..8f97aec 100644
--- a/server/src/routes/stream.rs
+++ b/server/src/routes/stream.rs
@@ -6,13 +6,9 @@
use super::ui::{account::session::Session, error::MyError};
use crate::database::Database;
use anyhow::{anyhow, Result};
-use jellybase::{federation::Federation, permission::PermissionSetExt, SECRETS};
-use jellycommon::{
- config::FederationAccount,
- stream::StreamSpec,
- user::{CreateSessionParams, UserPermission},
- TrackSource,
-};
+use jellybase::{assetfed::AssetInner, federation::Federation};
+use jellycommon::{stream::StreamSpec, TrackSource};
+use jellystream::SMediaInfo;
use log::{info, warn};
use rocket::{
get, head,
@@ -22,7 +18,7 @@ use rocket::{
Either, Request, Response, State,
};
use std::{
- collections::{BTreeMap, HashSet},
+ collections::{BTreeMap, BTreeSet},
ops::Range,
sync::Arc,
};
@@ -131,6 +127,19 @@ pub async fn r_stream(
let head = jellystream::stream_head(&spec);
+ let mut sources = BTreeSet::new();
+ for t in &media.tracks {
+ if let TrackSource::Local(x) = &t.source {
+ if let AssetInner::LocalTrack(m) = AssetInner::deser(&x.0)? {
+ sources.insert(m.path);
+ }
+ }
+ }
+ let media = Arc::new(SMediaInfo {
+ files: sources,
+ info: node,
+ });
+
match jellystream::stream(media, spec, urange).await {
Ok(stream) => Ok(Either::Left(StreamResponse {
stream,