mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-03 00:47:53 +00:00
cleanup; upload fbx
This commit is contained in:
1 parent
d8fbc09867
commit
c6dc35eccb
5 files changed
+28
-44
No files matched your search
+6
-14
@@ -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?;
|
||||
|
||||
+1
-5
@@ -228,12 +228,8 @@ pub async fn process_job(args: FbxToGltfJobArgs<'_>) -> Result<JobSuccessResult,
|
||||
maybe_public_bucket_prefix: None,
|
||||
maybe_public_bucket_extension: Some(BUCKET_FILE_EXTENSION),
|
||||
extra_file_modification_info: None,
|
||||
maybe_creator_user_token: None,
|
||||
maybe_creator_anonymous_visitor_token: None,
|
||||
creator_ip_address: &job.creator_ip_address,
|
||||
creator_set_visibility: job.creator_set_visibility,
|
||||
maybe_creator_file_synthetic_id_category: IdCategory::MediaFile,
|
||||
maybe_creator_category_synthetic_id_category: IdCategory::MediaFile,
|
||||
maybe_creator_category_synthetic_id_category: IdCategory::MocapResult,
|
||||
maybe_mod_user_token: None,
|
||||
is_batch_generated: false,
|
||||
is_generated_on_prem: false,
|
||||
|
||||
+9
-23
@@ -325,23 +325,15 @@ pub async fn process_job_lora(
|
||||
let sd_deps = match
|
||||
&args.job_dependencies.job.job_specific_dependencies.maybe_stable_diffusion_dependencies
|
||||
{
|
||||
None => {
|
||||
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,
|
||||
|
||||
+1
-1
@@ -321,7 +321,7 @@ fn record_to_payload(
|
||||
InferenceCategory::ImageGeneration => {
|
||||
"".to_string()
|
||||
}
|
||||
InferenceCategory::ConvertFbxToGltf => {
|
||||
InferenceCategory::FormatConversion => {
|
||||
"".to_string()
|
||||
}
|
||||
};
|
||||
|
||||
+11
-1
@@ -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_");
|
||||
|
||||
Reference in new issue
Block a user