mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-08 23:24:15 -05:00
Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5f18e9f2df | ||
|
|
6f14591736 | ||
|
|
5df48cf9c5 | ||
|
|
afbf122db0 |
@@ -83,6 +83,8 @@ pub async fn download_video_file(args: DownloadVideoFileArgs<'_>) -> Result<Vide
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use std::fs::File;
|
||||
use std::io::Write;
|
||||
use crate::datatypes::api::file_id::FileId;
|
||||
use crate::recipes::request_client_secrets::{request_client_secrets, RequestClientSecretsArgs};
|
||||
use crate::requests::download_video_file::download_video_file::{download_video_file, DownloadVideoFileArgs};
|
||||
@@ -117,6 +119,9 @@ mod tests {
|
||||
|
||||
println!("Video byte length: {:?}", download.bytes.len());
|
||||
|
||||
let mut file = File::create("download_video_file.test.mp4")?;
|
||||
file.write_all(&download.bytes)?;
|
||||
|
||||
assert_eq!(1, 2);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
+2
@@ -117,6 +117,7 @@ mod tests {
|
||||
use crate::requests::image_websocket::create_listen_websocket::{create_listen_websocket, CreateListenWebsocketArgs};
|
||||
use crate::requests::image_websocket::grok_websocket::GrokWebsocket;
|
||||
use crate::requests::image_websocket::listen_for_websocket_images::{listen_for_websocket_images, ListenForWebsocketImagesArgs};
|
||||
use crate::requests::image_websocket::messages::websocket_client_message::ClientMessageAspectRatio;
|
||||
use crate::requests::image_websocket::prompt_websocket_image::{prompt_websocket_image, PromptWebsocketImageArgs};
|
||||
use crate::test_utils::get_test_cookies::get_test_cookies;
|
||||
use crate::test_utils::setup_test_logging::setup_test_logging;
|
||||
@@ -147,6 +148,7 @@ mod tests {
|
||||
let _result = prompt_websocket_image(PromptWebsocketImageArgs {
|
||||
websocket: &mut websocket,
|
||||
prompt,
|
||||
aspect_ratio: ClientMessageAspectRatio::WideThreeByTwo,
|
||||
}).await?;
|
||||
|
||||
println!("Reading...");
|
||||
|
||||
+2
@@ -73,6 +73,7 @@ mod tests {
|
||||
use crate::requests::image_websocket::create_listen_websocket::{create_listen_websocket, CreateListenWebsocketArgs};
|
||||
use crate::requests::image_websocket::grok_websocket::GrokWebsocket;
|
||||
use crate::requests::image_websocket::listen_for_websocket_request_id::{listen_for_websocket_request_id, ListenForWebsocketRequestIdArgs};
|
||||
use crate::requests::image_websocket::messages::websocket_client_message::ClientMessageAspectRatio;
|
||||
use crate::requests::image_websocket::prompt_websocket_image::{prompt_websocket_image, PromptWebsocketImageArgs};
|
||||
use crate::test_utils::get_test_cookies::get_test_cookies;
|
||||
use crate::test_utils::setup_test_logging::setup_test_logging;
|
||||
@@ -103,6 +104,7 @@ mod tests {
|
||||
let _result = prompt_websocket_image(PromptWebsocketImageArgs {
|
||||
websocket: &mut websocket,
|
||||
prompt,
|
||||
aspect_ratio: ClientMessageAspectRatio::Square,
|
||||
}).await?;
|
||||
|
||||
println!("Reading...");
|
||||
|
||||
+15
-1
@@ -46,11 +46,24 @@ pub struct ClientMessageItemContentProperties {
|
||||
pub enable_nsfw: bool,
|
||||
pub skip_upsampler: bool,
|
||||
pub is_initial: bool,
|
||||
pub aspect_ratio: ClientMessageAspectRatio,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Clone, Copy, Debug)]
|
||||
pub enum ClientMessageAspectRatio {
|
||||
#[serde(rename = "2:3")]
|
||||
TallTwoByThree,
|
||||
|
||||
#[serde(rename = "3:2")]
|
||||
WideThreeByTwo,
|
||||
|
||||
#[serde(rename = "1:1")]
|
||||
Square,
|
||||
}
|
||||
|
||||
impl WebsocketClientMessage {
|
||||
/// Create a new image prompt websocket client message
|
||||
pub fn new_image_prompt(prompt: &str) -> Self {
|
||||
pub fn new_image_prompt(prompt: &str, aspect_ratio: ClientMessageAspectRatio) -> Self {
|
||||
Self {
|
||||
r#type: "conversation.item.create".to_string(),
|
||||
timestamp: Utc::now().timestamp_millis() as u64,
|
||||
@@ -67,6 +80,7 @@ impl WebsocketClientMessage {
|
||||
enable_nsfw: true,
|
||||
skip_upsampler: false,
|
||||
is_initial: false,
|
||||
aspect_ratio,
|
||||
},
|
||||
}
|
||||
],
|
||||
|
||||
+5
-2
@@ -1,15 +1,16 @@
|
||||
use crate::error::grok_error::GrokError;
|
||||
use crate::requests::image_websocket::grok_websocket::GrokWebsocket;
|
||||
use crate::requests::image_websocket::messages::websocket_client_message::WebsocketClientMessage;
|
||||
use crate::requests::image_websocket::messages::websocket_client_message::{ClientMessageAspectRatio, WebsocketClientMessage};
|
||||
|
||||
pub struct PromptWebsocketImageArgs<'a> {
|
||||
pub websocket: &'a mut GrokWebsocket,
|
||||
pub prompt: &'a str,
|
||||
pub aspect_ratio: ClientMessageAspectRatio,
|
||||
}
|
||||
|
||||
|
||||
pub async fn prompt_websocket_image(args: PromptWebsocketImageArgs<'_>) -> Result<(), GrokError> {
|
||||
let message = WebsocketClientMessage::new_image_prompt(args.prompt);
|
||||
let message = WebsocketClientMessage::new_image_prompt(args.prompt, args.aspect_ratio);
|
||||
|
||||
args.websocket.send_serializable(&message).await?;
|
||||
|
||||
@@ -21,6 +22,7 @@ mod tests {
|
||||
use crate::requests::image_websocket::create_listen_websocket::{create_listen_websocket, CreateListenWebsocketArgs};
|
||||
use crate::requests::image_websocket::grok_websocket::GrokWebsocket;
|
||||
use crate::requests::image_websocket::grok_wrapped_websocket::GrokWrappedWebsocket;
|
||||
use crate::requests::image_websocket::messages::websocket_client_message::ClientMessageAspectRatio;
|
||||
use crate::requests::image_websocket::messages::websocket_server_message::WebsocketServerMessage;
|
||||
use crate::requests::image_websocket::prompt_websocket_image::{prompt_websocket_image, PromptWebsocketImageArgs};
|
||||
use crate::test_utils::get_test_cookies::get_test_cookies;
|
||||
@@ -50,6 +52,7 @@ mod tests {
|
||||
let result = prompt_websocket_image(PromptWebsocketImageArgs {
|
||||
websocket: &mut websocket,
|
||||
prompt: "a dog riding a motorcycle",
|
||||
aspect_ratio: ClientMessageAspectRatio::WideThreeByTwo,
|
||||
}).await?;
|
||||
|
||||
println!("Reading...");
|
||||
|
||||
+11
-1
@@ -1,12 +1,13 @@
|
||||
use crate::core::commands::enqueue::generate_error::GenerateError;
|
||||
use crate::core::commands::enqueue::task_enqueue_success::TaskEnqueueSuccess;
|
||||
use crate::core::commands::enqueue::text_to_image::enqueue_text_to_image_command::EnqueueTextToImageRequest;
|
||||
use crate::core::commands::enqueue::text_to_image::enqueue_text_to_image_command::{EnqueueTextToImageRequest, TextToImageSize};
|
||||
use crate::core::events::generation_events::common::GenerationModel;
|
||||
use crate::core::state::app_env_configs::app_env_configs::AppEnvConfigs;
|
||||
use crate::services::grok::state::grok_credential_manager::GrokCredentialManager;
|
||||
use crate::services::grok::state::grok_image_prompt_queue::{GrokImagePromptQueue, PromptItem};
|
||||
use enums::common::generation_provider::GenerationProvider;
|
||||
use enums::tauri::tasks::task_type::TaskType;
|
||||
use grok_client::requests::image_websocket::messages::websocket_client_message::ClientMessageAspectRatio;
|
||||
use idempotency::uuid::generate_random_uuid;
|
||||
use tauri::AppHandle;
|
||||
|
||||
@@ -53,9 +54,18 @@ pub async fn handle_grok(
|
||||
.map(|prompt| prompt.trim().to_string())
|
||||
.unwrap_or_else(|| "".to_string());
|
||||
|
||||
let aspect_ratio = match request.aspect_ratio {
|
||||
None => ClientMessageAspectRatio::Square,
|
||||
Some(TextToImageSize::Auto) => ClientMessageAspectRatio::Square,
|
||||
Some(TextToImageSize::Square) => ClientMessageAspectRatio::Square,
|
||||
Some(TextToImageSize::Wide) => ClientMessageAspectRatio::WideThreeByTwo,
|
||||
Some(TextToImageSize::Tall) => ClientMessageAspectRatio::TallTwoByThree,
|
||||
};
|
||||
|
||||
grok_image_prompt_queue.enqueue(PromptItem {
|
||||
task_id: job_id.clone(),
|
||||
prompt,
|
||||
aspect_ratio,
|
||||
})?;
|
||||
|
||||
Ok(TaskEnqueueSuccess {
|
||||
|
||||
@@ -2,6 +2,7 @@ use crate::core::artcraft_error::ArtcraftError;
|
||||
use log::error;
|
||||
use std::collections::VecDeque;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use grok_client::requests::image_websocket::messages::websocket_client_message::ClientMessageAspectRatio;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct GrokImagePromptQueue {
|
||||
@@ -16,6 +17,9 @@ pub struct PromptItem {
|
||||
|
||||
/// Text prompt
|
||||
pub prompt: String,
|
||||
|
||||
/// The aspect ratio of the image
|
||||
pub aspect_ratio: ClientMessageAspectRatio,
|
||||
}
|
||||
|
||||
impl GrokImagePromptQueue {
|
||||
|
||||
+2
@@ -22,6 +22,7 @@ use grok_client::requests::image_websocket::create_listen_websocket::{create_lis
|
||||
use grok_client::requests::image_websocket::grok_websocket::GrokWebsocket;
|
||||
use grok_client::requests::image_websocket::grok_wrapped_websocket::GrokWrappedWebsocket;
|
||||
use grok_client::requests::image_websocket::listen_for_websocket_images::{listen_for_websocket_images, ImageResults, ListenForWebsocketImagesArgs};
|
||||
use grok_client::requests::image_websocket::messages::websocket_client_message::ClientMessageAspectRatio;
|
||||
use grok_client::requests::image_websocket::prompt_websocket_image::{prompt_websocket_image, PromptWebsocketImageArgs};
|
||||
use idempotency::uuid::generate_random_uuid;
|
||||
use log::{error, info, warn};
|
||||
@@ -141,6 +142,7 @@ async fn inner_loop(
|
||||
let _result = prompt_websocket_image(PromptWebsocketImageArgs {
|
||||
websocket: &mut websocket,
|
||||
prompt: &prompt_item.prompt,
|
||||
aspect_ratio: prompt_item.aspect_ratio,
|
||||
}).await?;
|
||||
|
||||
let images = listen_for_websocket_images(ListenForWebsocketImagesArgs {
|
||||
|
||||
Reference in New Issue
Block a user