#!/bin/bash
set -e

# capture-signal.sh - Screenshot capture script for trend scouting
# Usage: capture-signal.sh <URL> [slug]

URL="$1"
CUSTOM_SLUG="$2"

if [ -z "$URL" ]; then
    echo "Error: URL is required" >&2
    echo "Usage: $0 <URL> [slug]" >&2
    exit 1
fi

# Generate slug from URL if not provided
if [ -z "$CUSTOM_SLUG" ]; then
    SLUG=$(echo "$URL" | sed 's|https://||g' | sed 's|http://||g' | sed 's|www\.||g' | sed 's|/.*||g' | sed 's|[^a-zA-Z0-9]|-|g' | sed 's|--*|-|g' | sed 's|^-||g' | sed 's|-$||g')
else
    SLUG="$CUSTOM_SLUG"
fi

# Create date prefix
DATE_PREFIX=$(date +%Y-%m-%d)

# Create screenshots directory
SCREENSHOTS_DIR="/root/.openclaw/workspace/strategic-intelligence/screenshots"
mkdir -p "$SCREENSHOTS_DIR"

# Create temp directory for processing
TEMP_DIR=$(mktemp -d)
trap "rm -rf $TEMP_DIR" EXIT

# Temporary files
FULL_SCREENSHOT="$TEMP_DIR/full.png"
CROPPED_SCREENSHOT="$TEMP_DIR/cropped.png"
FINAL_PATH="$SCREENSHOTS_DIR/${DATE_PREFIX}-${SLUG}.jpg"

# Capture full page screenshot with playwright
if ! /usr/local/bin/playwright screenshot \
    --browser chromium \
    --viewport-size 1400,900 \
    --full-page \
    "$URL" \
    "$FULL_SCREENSHOT"; then
    echo "Error: Failed to capture screenshot" >&2
    exit 1
fi

# Crop to top 900px (hero section)
if ! convert "$FULL_SCREENSHOT" -crop 1400x900+0+0 "$CROPPED_SCREENSHOT"; then
    echo "Error: Failed to crop screenshot" >&2
    exit 1
fi

# Compress and resize to final format
if ! convert "$CROPPED_SCREENSHOT" \
    -quality 85 \
    -resize 1400x \
    "$FINAL_PATH"; then
    echo "Error: Failed to compress screenshot" >&2
    exit 1
fi

# Check if file is under 200KB, if not reduce quality further
FILE_SIZE=$(stat -c%s "$FINAL_PATH")
if [ $FILE_SIZE -gt 204800 ]; then
    # Try with lower quality
    if ! convert "$CROPPED_SCREENSHOT" \
        -quality 70 \
        -resize 1400x \
        "$FINAL_PATH"; then
        echo "Error: Failed to compress screenshot to required size" >&2
        exit 1
    fi
fi

# Print output path on success
echo "$FINAL_PATH"
exit 0