diff --git a/crates/lib/mysql_queries/src/queries/media_files/create/insert_media_file_generic.rs b/crates/lib/mysql_queries/src/queries/media_files/create/insert_media_file_generic.rs index 87d00f9dbf..ee9833eb7e 100644 --- a/crates/lib/mysql_queries/src/queries/media_files/create/insert_media_file_generic.rs +++ b/crates/lib/mysql_queries/src/queries/media_files/create/insert_media_file_generic.rs @@ -8,6 +8,7 @@ use enums::common::visibility::Visibility; use errors::AnyhowResult; use sqlx; use sqlx::MySqlPool; +use buckets::public::media_files::bucket_file_path::MediaFileBucketPath; use tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken; use tokens::tokens::media_files::MediaFileToken; use tokens::tokens::model_weights::ModelWeightToken; @@ -49,13 +50,6 @@ pub struct InsertArgs<'a> { pub maybe_public_bucket_extension: Option<&'a str>, pub extra_file_modification_info: Option<&'a str>, // Assuming TEXT type can be represented by &str - // Creator information - pub maybe_creator_user_token: Option<&'a UserToken>, - pub maybe_creator_anonymous_visitor_token: Option<&'a AnonymousVisitorTrackingToken>, - - pub creator_ip_address: &'a str, - pub creator_set_visibility: Visibility, - pub maybe_creator_file_synthetic_id_category: IdCategory, pub maybe_creator_category_synthetic_id_category: IdCategory, @@ -165,11 +159,11 @@ pub async fn insert_media_file_generic( args.maybe_public_bucket_extension, args.extra_file_modification_info, - args.maybe_creator_user_token.map(|e| e.to_string()), - args.maybe_creator_anonymous_visitor_token.map(|e| e.to_string()), + args.job.maybe_creator_user_token.as_deref(), + args.job.maybe_creator_anonymous_visitor_token.as_deref(), - args.creator_ip_address, - args.creator_set_visibility.to_str(), + args.job.creator_ip_address, + args.job.creator_set_visibility.to_str(), maybe_creator_file_synthetic_id, maybe_creator_category_synthetic_id, @@ -181,9 +175,7 @@ pub async fn insert_media_file_generic( ).execute(&mut *transaction).await; let record_id = match query_result { - Ok(res) => { - res.last_insert_id() - }, + Ok(res) => res.last_insert_id(), Err(err) => { // TODO: handle better //transaction.rollback().await?; diff --git a/crates/service/job/inference_job/src/job/job_types/format_conversion/fbx_to_gltf/process_job.rs b/crates/service/job/inference_job/src/job/job_types/format_conversion/fbx_to_gltf/process_job.rs index 003b580354..a9e4cd4e3a 100644 --- a/crates/service/job/inference_job/src/job/job_types/format_conversion/fbx_to_gltf/process_job.rs +++ b/crates/service/job/inference_job/src/job/job_types/format_conversion/fbx_to_gltf/process_job.rs @@ -228,12 +228,8 @@ pub async fn process_job(args: FbxToGltfJobArgs<'_>) -> Result { - return Err(ProcessSingleJobError::Other(anyhow!("Missing Job Specific Dependencies"))); - } - Some(val) => { val } + Some(val) => val, + None => return Err(ProcessSingleJobError::Other(anyhow!("Missing Job Specific Dependencies"))), }; let creator_ip_address = &job.creator_ip_address; - let creator_user_token: UserToken; - - match &job.maybe_creator_user_token { - Some(token) => { - creator_user_token = UserToken::new_from_str(token); - } - None => { - return Err(ProcessSingleJobError::InvalidJob(anyhow!("Missing Creator User Token"))); - } - } + let creator_user_token = match job.maybe_creator_user_token.as_deref() { + Some(token) => UserToken::new_from_str(token), + None => return Err(ProcessSingleJobError::InvalidJob(anyhow!("Missing Creator User Token"))), + }; let work_temp_dir = format!("temp_stable_diffusion_inference_{}", job.id.0); @@ -760,15 +752,13 @@ pub async fn process_job_inference( }); - - // hack to check the directory before clean up. // let thirtyMinutes = 1800; // thread::sleep(Duration::from_secs(thirtyMinutes)); // upload media and create a record. let inference_duration = Instant::now().duration_since(inference_start_time); - let creator_ip_address = &job.creator_ip_address; + // run a for loop for output images output_0 in the folder then use upload media. // pngs @@ -834,17 +824,13 @@ pub async fn process_job_inference( maybe_duration_millis: Some(inference_duration.as_millis() as u64), maybe_audio_encoding: None, maybe_video_encoding: None, - maybe_frame_width: Some(sd_args.maybe_width.unwrap_or(512) as u32), - maybe_frame_height: Some(sd_args.maybe_height.unwrap_or(512) as u32), + maybe_frame_width: Some(sd_args.maybe_width.unwrap_or(512)), + maybe_frame_height: Some(sd_args.maybe_height.unwrap_or(512)), checksum_sha2: metadata.sha256_checksum.as_str(), public_bucket_directory_hash: bucket_details.object_hash.as_str(), maybe_public_bucket_prefix: Some(bucket_details.prefix.as_str()), maybe_public_bucket_extension: Some(bucket_details.suffix.as_str()), extra_file_modification_info: Some(&inputs), - maybe_creator_user_token: Some(&creator_user_token), - maybe_creator_anonymous_visitor_token: anon_user_token.as_ref(), - creator_ip_address, - creator_set_visibility: args.job.creator_set_visibility, maybe_creator_file_synthetic_id_category: IdCategory::MediaFile, maybe_creator_category_synthetic_id_category: IdCategory::ModelWeights, maybe_mod_user_token: None, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get_inference_job_status.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get_inference_job_status.rs index 7c920279f8..613b857530 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get_inference_job_status.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get_inference_job_status.rs @@ -321,7 +321,7 @@ fn record_to_payload( InferenceCategory::ImageGeneration => { "".to_string() } - InferenceCategory::ConvertFbxToGltf => { + InferenceCategory::FormatConversion => { "".to_string() } }; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/process_upload_media_file.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/process_upload_media_file.rs index b0e5017e15..afcead43b8 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/process_upload_media_file.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/process_upload_media_file.rs @@ -256,13 +256,23 @@ pub async fn process_upload_media_file( } } + let mut maybe_mocap_extension = None; + if media_file_type.is_none() && maybe_mimetype.is_none() { // https://research.cs.wisc.edu/graphics/Courses/cs-838-1999/Jeff/BVH.html const BVH_HEADER : &[u8] = "HIERARCHY".as_bytes(); + // https://code.blender.org/2013/08/fbx-binary-file-format-specification/ + const FBX_HEADER : &[u8] = "Kaydara FBX Binary".as_bytes(); + if bytes.starts_with(BVH_HEADER) { media_file_type = Some(MediaFileType::Mocap); maybe_mimetype = Some("application/octet-stream"); + maybe_mocap_extension = Some(".bvh".to_string()); + } else if bytes.starts_with(FBX_HEADER) { + media_file_type = Some(MediaFileType::Mocap); + maybe_mimetype = Some("application/octet-stream"); + maybe_mocap_extension = Some(".fbx".to_string()); } } @@ -293,7 +303,7 @@ pub async fn process_upload_media_file( .map(|extension| format!(".{extension}")); if extension.is_none() && media_file_type == MediaFileType::Mocap { - extension = Some(".bvh".to_string()); + extension = maybe_mocap_extension; } const PREFIX : Option<&str> = Some("upload_");