#!/bin/bash
QQ_COLLECTION_URL="https://sharechain.qq.com/550d992708fbf2c9ae08ca85bb8e4072"
CURRENT_VERSION="1.1"
CURRENT_SCRIPT="$0"
TARGET_SCRIPT="/data/AI半自动脚本.sh"

TEMP_DIR="/sdcard/.tmp_script_update"
[ ! -d "$TEMP_DIR" ] && mkdir -p "$TEMP_DIR" >/dev/null 2>&1
[ ! -w "$TEMP_DIR" ] && exit 1
TEMP_SCRIPT="$TEMP_DIR/self_update_temp.sh"

get_cloud_content() {
    local url="$1"
    local content
    if command -v curl >/dev/null 2>&1; then
        content=$(curl -s -L -A "Mozilla/5.0" --connect-timeout 10 "$url" 2>/dev/null)
    elif command -v wget >/dev/null 2>&1; then
        content=$(wget -q -U "Mozilla/5.0" -O - --timeout 10 "$url" 2>/dev/null)
    fi
    [ -z "$content" ] && exit 1
    echo "$content"
}

get_cloud_version() {
    local content="$1"
    local version=$(echo "$content" | grep -o '\[版本号\][^[]*\[版本号\]' | head -1 | sed 's/\[版本号\]//g')
    echo "$(echo "$version" | sed 's/[^0-9.]//g')"
}

get_download_url() {
    local content="$1"
    local url=$(echo "$content" | grep -o '\[链接\][^[]*\[链接\]' | head -1 | sed 's/\[链接\]//g')
    [ -z "$url" ] && url=$(echo "$content" | grep -o 'href="[^"]*\.sh"' | head -1 | sed 's/href="//;s/"//')
    [ -z "$url" ] && url=$(echo "$content" | grep -o 'https://[^"]*\.sh' | head -1)
    echo "$(echo "$url" | sed 's/[[:space:]]//g; s/\\//g')"
}

compare_versions() {
    local current=$1
    local new=$2
    current=$(echo "$current" | sed 's/[^0-9.]//g')
    new=$(echo "$new" | sed 's/[^0-9.]//g')
    IFS='.' read -ra curr_parts <<< "$current"
    IFS='.' read -ra new_parts <<< "$new"
    local max_len=${#new_parts[@]}
    [ ${#curr_parts[@]} -gt "$max_len" ] && max_len=${#curr_parts[@]}
    for i in $(seq 0 $((max_len-1))); do
        local curr_part=${curr_parts[i]:-0}
        local new_part=${new_parts[i]:-0}
        [ "$new_part" -gt "$curr_part" ] && { echo "need_update"; return; }
        [ "$new_part" -lt "$curr_part" ] && { echo "local_newer"; return; }
    done
    echo "same"
}

update_target_script() {
    local url="$1"
    rm -f "$TEMP_SCRIPT" >/dev/null 2>&1
    
    if command -v curl >/dev/null 2>&1; then
        curl -L -s -o "$TEMP_SCRIPT" --connect-timeout 15 "$url" || exit 1
    elif command -v wget >/dev/null 2>&1; then
        wget -q -O "$TEMP_SCRIPT" --timeout 15 "$url" || exit 1
    else
        exit 1
    fi
    
    [ -s "$TEMP_SCRIPT" ] || { rm -f "$TEMP_SCRIPT"; exit 1; }
    chmod 777 "$TEMP_SCRIPT" >/dev/null 2>&1 || { rm -f "$TEMP_SCRIPT"; exit 1; }
    
    chmod 777 "$(dirname "$TARGET_SCRIPT")" >/dev/null 2>&1
    chmod 777 "$TARGET_SCRIPT" >/dev/null 2>&1
    
    cp -f "$TEMP_SCRIPT" "$TARGET_SCRIPT" || { rm -f "$TEMP_SCRIPT"; exit 1; }
    chmod 777 "$TARGET_SCRIPT" >/dev/null 2>&1
    rm -f "$TEMP_SCRIPT" >/dev/null 2>&1
    echo "更新完成请重新运行脚本"
}

main() {
    local cloud_content=$(get_cloud_content "$QQ_COLLECTION_URL")
    local cloud_version=$(get_cloud_version "$cloud_content")
    [ -z "$cloud_version" ] && exit 1
    local compare_result=$(compare_versions "$CURRENT_VERSION" "$cloud_version")
    
    if [ "$compare_result" = "same" ]; then
        exit 0
    fi
    
    if [ "$compare_result" = "need_update" ]; then
        local download_url=$(get_download_url "$cloud_content")
        [ -z "$download_url" ] && exit 1
        update_target_script "$download_url"
    fi
    
    if [ "$compare_result" = "local_newer" ]; then
        exit 0
    fi
}

main

exit 0
