pathScripts/bfl

66 lines
1.5 KiB
Bash
Executable file

#!/bin/bash
if [ $# -eq 0 ]; then
echo "Usage: $0 \"prompt\""
exit 1
fi
# Get script directory and load .env file
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
if [ -f "$SCRIPT_DIR/.env" ]; then
source "$SCRIPT_DIR/.env"
else
echo "Error: .env file not found in script directory"
exit 1
fi
# Check if BFL_API_KEY is set
if [ -z "$BFL_API_KEY" ]; then
echo "Error: BFL_API_KEY not found in .env file"
exit 1
fi
# Escape the prompt for JSON
PROMPT=$(echo "$1" | jq -R -s '.')
# Make the initial request
request=$(curl -X 'POST' \
'https://api.us1.bfl.ai/v1/flux-dev' \
-H 'accept: application/json' \
-H "x-key: ${BFL_API_KEY}" \
-H 'Content-Type: application/json' \
-d "{
\"prompt\": ${PROMPT},
\"width\": 1024,
\"height\": 768
}")
echo "Initial request: $request"
request_id=$(jq -r .id <<< "$request")
# Poll for results
while true
do
sleep 0.5
result=$(curl -s -X 'GET' \
"https://api.us1.bfl.ai/v1/get_result?id=${request_id}" \
-H 'accept: application/json' \
-H "x-key: ${BFL_API_KEY}")
status=$(jq -r .status <<< "$result")
echo "Status: $status"
if [ "$status" == "Ready" ]; then
image_url=$(jq -r .result.sample <<< "$result")
echo "Image URL: $image_url"
# Generate random filename
random_name=$(openssl rand -hex 8)
filename="${random_name}.jpg"
# Download the image
curl -s -L "$image_url" -o "$filename"
echo "Image saved as: $filename"
break
fi
done