From 939dc3bc4671942271bd7e0ced42e47618b2efae Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Sat, 16 May 2026 13:06:29 -0400 Subject: [PATCH] media token fix --- Cargo.lock | 31 +++++++++ Cargo.toml | 1 + .../video/pipeline_v2/run_pipeline_v2.rs | 66 +++++++++++++++++++ 3 files changed, 98 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 5f3b30bbee..334f2afccf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4691,6 +4691,37 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +[[package]] +name = "gmicloud-job" +version = "0.0.1" +dependencies = [ + "actix-web", + "actix_helpers", + "anyhow", + "bootstrap", + "bucket_paths", + "cloud_storage", + "concurrency", + "easyenv", + "enums", + "errors", + "gmicloud_client", + "hashing", + "jobs_common", + "log", + "mysql_queries", + "reqwest 0.12.23", + "serde", + "serde_derive", + "serde_json", + "server_environment", + "shared_env_var_config", + "sqlx", + "tokens", + "tokio", + "workspace-build-acceleration", +] + [[package]] name = "gmicloud_client" version = "0.0.1" diff --git a/Cargo.toml b/Cargo.toml index 39eed13d30..d3cbc5ad6d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -124,6 +124,7 @@ members = [ "crates/schema/public/tokens", # Services: API servers, jobs, workers, etc. + "crates/service/job/gmicloud_job", "crates/service/job/seedance2_pro_job", "crates/service/job/video_thumbnail_job", "crates/service/job/worldlabs_job", diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v2/run_pipeline_v2.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v2/run_pipeline_v2.rs index 97837e7216..fc70046617 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v2/run_pipeline_v2.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v2/run_pipeline_v2.rs @@ -2,8 +2,12 @@ use std::collections::HashMap; use log::{error, info, warn}; use sqlx::pool::PoolConnection; +use artcraft_router::api::audio_list_ref::AudioListRef; use artcraft_router::api::common_video_model::CommonVideoModel; +use artcraft_router::api::image_list_ref::ImageListRef; +use artcraft_router::api::image_ref::ImageRef; use artcraft_router::api::provider::Provider; +use artcraft_router::api::video_list_ref::VideoListRef; use artcraft_router::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use artcraft_router::generate::generate_video::generate_video_response::GenerateVideoResponse; use artcraft_router::generate::generate_video_v2::video_generation_draft_context::VideoGenerationDraftContext; @@ -51,6 +55,12 @@ pub async fn run_pipeline_v2(args: RunPipelineV2Args<'_>) -> Result>, +) { + let map = match url_map { + Some(m) => m, + None => return, + }; + + // start_frame + if let Some(ImageRef::MediaFileToken(ref token)) = builder.start_frame { + if let Some(url) = map.get(token) { + builder.start_frame = Some(ImageRef::Url(url.clone())); + } + } + + // end_frame + if let Some(ImageRef::MediaFileToken(ref token)) = builder.end_frame { + if let Some(url) = map.get(token) { + builder.end_frame = Some(ImageRef::Url(url.clone())); + } + } + + // reference_images + if let Some(ImageListRef::MediaFileTokens(ref tokens)) = builder.reference_images { + let urls: Vec = tokens.iter() + .filter_map(|t| map.get(t).cloned()) + .collect(); + if !urls.is_empty() { + builder.reference_images = Some(ImageListRef::Urls(urls)); + } + } + + // reference_videos + if let Some(VideoListRef::MediaFileTokens(ref tokens)) = builder.reference_videos { + let urls: Vec = tokens.iter() + .filter_map(|t| map.get(t).cloned()) + .collect(); + if !urls.is_empty() { + builder.reference_videos = Some(VideoListRef::Urls(urls)); + } + } + + // reference_audio + if let Some(AudioListRef::MediaFileTokens(ref tokens)) = builder.reference_audio { + let urls: Vec = tokens.iter() + .filter_map(|t| map.get(t).cloned()) + .collect(); + if !urls.is_empty() { + builder.reference_audio = Some(AudioListRef::Urls(urls)); + } + } +}