You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -13,16 +13,16 @@ use mime_guess::get_mime_extensions_str;
13
13
use nanoid::nanoid;
14
14
use query_external_ip::SourceError;
15
15
use regex::Regex;
16
-
use rs_plugin_common_interfaces::{request::{RsRequest,RsRequestStatus}, url::{RsLink,RsLinkType},PluginType,RsCookie};
16
+
use rs_plugin_common_interfaces::{request::{RsRequest,RsRequestStatus}, url::{RsLink,RsLinkType},video::{RsVideoTranscodeJob,RsVideoTranscodeJobPluginRequest,RsVideoTranscodeStatus,VideoConvertRequest,VideoOverlayType},PluginType,RsCookie};
17
17
use rusqlite::{types::{FromSql,FromSqlError,FromSqlResult,ToSqlOutput,ValueRef},ToSql};
18
18
use serde::{Deserialize,Serialize};
19
19
use strum_macros::EnumString;
20
-
use tokio::{fs::File, io::{copy,AsyncRead,AsyncReadExt,AsyncWriteExt}, sync::mpsc};
20
+
use tokio::{fs::File, io::{copy,AsyncRead,AsyncReadExt,AsyncWriteExt}, sync::mpsc, time::sleep, time::Duration};
21
21
use tokio_stream::StreamExt;
22
22
use tokio_util::{compat::{TokioAsyncReadCompatExt,TokioAsyncWriteCompatExt}, io::{ReaderStream,StreamReader,SyncIoBridge}};
let store = self.store.get_library_store(library_id)?;
1133
1134
let media = store.get_media(media_id, requesting_user.user_id().ok()).await?.ok_or(SourcesError::UnableToFindMedia(library_id.to_string(), media_id.to_string(),"convert".to_string()))?;
1134
1135
1135
1136
1136
1137
let filename = format!("{}.{}", remove_extension(&media.name), request.format);
1137
-
let queue_element = VideoConvertQueueElement::new(library_id.to_string(), media_id.to_string(), filename, requesting_user.clone(), request);
1138
+
let queue_element = VideoConvertQueueElement::new(library_id.to_string(),plugin_id.clone(),media_id.to_string(), filename.clone(), requesting_user.clone(), request.clone());
1138
1139
let message = ConvertMessage{
1139
1140
library: library_id.to_string(),
1140
1141
progress: queue_element.status.clone(),
1141
1142
};
1142
1143
self.send_convert_progress(message);
1143
1144
1145
+
1146
+
// If plugin convert is requested
1147
+
ifletSome(plugin_id) = &plugin_id {
1148
+
let status = self.convert_submit_media(library_id, media_id, request.clone(),&plugin_id).await?;
1149
+
let job_id = status.id.clone();
1150
+
1151
+
// Clone what you need for the background task
1152
+
let plugin_id_owned = plugin_id.clone();
1153
+
let mc_progress = self.clone();// or however you get your progress sender
1154
+
let request_clone = request.clone();
1155
+
let lib_progress = library_id.to_string();// adjust based on your actual type
1156
+
let name_progress = filename.clone();
1157
+
let media_progress:MediaForUpdate = media.into();
1158
+
// Spawn background task
1159
+
tokio::spawn(asyncmove{
1160
+
letmut poll_interval = Duration::from_secs(2);
1161
+
1162
+
loop{
1163
+
sleep(poll_interval).await;
1164
+
1165
+
match mc_progress.convert_status(&job_id,&plugin_id_owned).await{
0 commit comments