84 lines
2.0 KiB
Bash
84 lines
2.0 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
# VIMS Photo Upload Script
|
||
|
|
# Uploads photos to VIMS API
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
API_URL="${VIMS_API_URL:-http://localhost:3450}"
|
||
|
|
|
||
|
|
# Colors
|
||
|
|
RED='\033[0;31m'
|
||
|
|
GREEN='\033[0;32m'
|
||
|
|
YELLOW='\033[1;33m'
|
||
|
|
NC='\033[0m'
|
||
|
|
|
||
|
|
show_help() {
|
||
|
|
echo "VIMS Photo Upload"
|
||
|
|
echo ""
|
||
|
|
echo "Usage:"
|
||
|
|
echo " $0 -f <photo.jpg> -o <object-id> -a <angle>"
|
||
|
|
echo ""
|
||
|
|
echo "Options:"
|
||
|
|
echo " -f Photo file path"
|
||
|
|
echo " -o Object ID (from created object)"
|
||
|
|
echo " -a Angle: front, back, left, right, top, detail"
|
||
|
|
echo " -z Zoomer ID (optional)"
|
||
|
|
echo ""
|
||
|
|
echo "Examples:"
|
||
|
|
echo " $0 -f ~/photos/atm1.jpg -o abc-123 -a front"
|
||
|
|
echo " $0 -f ~/photos/atm1.jpg -o abc-123 -a left -z zoomer-001"
|
||
|
|
}
|
||
|
|
|
||
|
|
# Parse arguments
|
||
|
|
while getopts "f:o:a:z:h" opt; do
|
||
|
|
case $opt in
|
||
|
|
f) PHOTO="$OPTARG" ;;
|
||
|
|
o) OBJECT_ID="$OPTARG" ;;
|
||
|
|
a) ANGLE="$OPTARG" ;;
|
||
|
|
z) ZOOMER_ID="$OPTARG" ;;
|
||
|
|
h) show_help; exit 0 ;;
|
||
|
|
*) show_help; exit 1 ;;
|
||
|
|
esac
|
||
|
|
done
|
||
|
|
|
||
|
|
# Validate
|
||
|
|
if [ -z "$PHOTO" ] || [ -z "$OBJECT_ID" ] || [ -z "$ANGLE" ]; then
|
||
|
|
echo -e "${RED}Error: Missing required arguments${NC}"
|
||
|
|
show_help
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ ! -f "$PHOTO" ]; then
|
||
|
|
echo -e "${RED}Error: File not found: $PHOTO${NC}"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo -e "${YELLOW}Uploading photo to VIMS...${NC}"
|
||
|
|
echo " File: $PHOTO"
|
||
|
|
echo " Object: $OBJECT_ID"
|
||
|
|
echo " Angle: $ANGLE"
|
||
|
|
|
||
|
|
# Build curl command
|
||
|
|
CURL_CMD="curl -s -X POST \"$API_URL/api/v1/observations\" \
|
||
|
|
-F \"images=@$PHOTO\" \
|
||
|
|
-F \"objectId=$OBJECT_ID\" \
|
||
|
|
-F \"angle=$ANGLE\""
|
||
|
|
|
||
|
|
if [ -n "$ZOOMER_ID" ]; then
|
||
|
|
CURL_CMD="$CURL_CMD -F \"zoomerId=$ZOOMER_ID\""
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Upload
|
||
|
|
RESPONSE=$(eval $CURL_CMD)
|
||
|
|
|
||
|
|
# Check response
|
||
|
|
if echo "$RESPONSE" | grep -q "error"; then
|
||
|
|
echo -e "${RED}Upload failed:${NC}"
|
||
|
|
echo "$RESPONSE" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE"
|
||
|
|
exit 1
|
||
|
|
else
|
||
|
|
echo -e "${GREEN}✓ Upload successful!${NC}"
|
||
|
|
echo "$RESPONSE" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE"
|
||
|
|
fi
|