memer-rs 0.1.0

a meme generation rust cli tool
Documentation
use async_openai::{
    Client,
    error::OpenAIError,
    types::{CreateImageRequestArgs, ImageModel, ImageResponseFormat, ImageSize},
};
use clap::Parser;
use dotenv::dotenv;

use crate::utils::{get_default_uuid_directory, load_prompt};
mod utils;

#[derive(Parser, Debug)]
#[command(name="memer", author, version, about, long_about=None)]
struct Args {
    #[arg(short, long)]
    query: String,

    #[arg(short, long, default_value_t=get_default_uuid_directory())]
    folder: String,
}

async fn generate_image(query: &str, dir: &str) -> Result<(), OpenAIError> {
    let client = Client::new();
    let request = CreateImageRequestArgs::default()
        .prompt(load_prompt(query))
        .response_format(ImageResponseFormat::B64Json)
        .size(ImageSize::S1024x1024)
        .model(ImageModel::DallE3)
        .build()?;
    let response = client.images().create(request).await?;
    response.save(dir).await?;
    Ok(())
}

#[tokio::main]
async fn main() {
    dotenv().ok();
    let args = Args::parse();
    generate_image(&args.query, &args.folder).await.unwrap();
}