#!/bin/bash

#----------------------------------------------------------------------------------
# Get_ERA_WorkEtaVIII.sh
# Script para fazer o download dos dados do ERA5 do ftp do INPE.
#
# Uso: Get_ERA_WorkEtaVIII.sh <HH> <FCTI> <FCTF> <YYYYMMDD>
# Exemplo: Get_ERA_WorkEtaVIII.sh 00 0 72 20220213
#----------------------------------------------------------------------------------

# Verifica o número de argumentos
if [[ $# -ne 4 ]]; then
    echo "Argumentos inválidos."
    echo "Use: $0 00 0 72 20220213"
    exit 1
fi

# Atribui os argumentos a variáveis
HH=$1
FCTI=$2
FCTF=$3
YYYYMMDD=$4

# Extrai os componentes da data
YYYY=${YYYYMMDD:0:4}
MM=${YYYYMMDD:4:2}
DD=${YYYYMMDD:6:2}

# Define os diretórios de origem e destino
BASE_URL="https://ftp1.cptec.inpe.br/pesquisa/grpeta/VIII-WorkEta/CI"
DEST_DIR_ATMOS="../../atmos/ETAwrk/ERA5"
DEST_DIR_SST="../../sst/ETAwrk/ERA5"

# Define os nomes dos arquivos de lista
LISTA_ATMOS="wget_atmos.list"
LISTA_SST="wget_sst.list"

# Limpa as listas de arquivos de download se elas existirem
> "$LISTA_ATMOS"
> "$LISTA_SST"


# Calcula a hora de início total (HH + FCTI)
HORA_INICIO_TOTAL=$((10#$HH + 10#$FCTI))

# Adiciona 6 horas para o próximo passo (intervalo fixo)
HORA_PASSO=6

# Calcula a hora de fim total (HH + FCTF)
HORA_FIM_TOTAL=$((10#$HH + 10#$FCTF))

# Loop para calcular as horas a serem baixadas usando 'date'
HORA_ATUAL_TOTAL=$HORA_INICIO_TOTAL
while [[ $HORA_ATUAL_TOTAL -le $HORA_FIM_TOTAL ]]; do
    # Adiciona o total de horas à data base para obter a data e hora final
    DATA_HORA=$(LC_ALL=C date -d "${YYYY}-${MM}-${DD} + ${HORA_ATUAL_TOTAL} hours" +"%Y%m%d%H")
    
    # Adiciona os arquivos às listas
    echo "${BASE_URL}/atmos/ETAwrk/${DATA_HORA}.tar.gz" >> "$LISTA_ATMOS"
    echo "${BASE_URL}/sst/ETAwrk/${DATA_HORA}.tar.gz" >> "$LISTA_SST"
    
    # Adiciona 6 horas para o próximo passo (intervalo fixo)
    HORA_ATUAL_TOTAL=$((HORA_ATUAL_TOTAL + HORA_PASSO))
done

# --- Download dos arquivos de 'atmos' ---
echo "Iniciando o download de arquivos do ERA5 ... ... "
echo "Isso pode demorar alguns minutos ... ..."

xargs -n 1 -P 5 wget --no-check-certificate -q -c -t 3 --directory-prefix="$DEST_DIR_ATMOS" < "$LISTA_ATMOS"

# --- Download dos arquivos de 'sst' ---
xargs -n 1 -P 5 wget --no-check-certificate -q -c -t 3 --directory-prefix="$DEST_DIR_SST" < "$LISTA_SST"


# Remove os arquivos de lista após o download
rm "$LISTA_ATMOS" "$LISTA_SST"

# --- Processamento dos arquivos de 'atmos' ---
cd "$DEST_DIR_ATMOS" || exit 1
wget --no-check-certificate -q https://ftp1.cptec.inpe.br/pesquisa/grpeta/VIII-WorkEta/CI/atmos/ETAwrk/ERA5_2022021300.ctl
wget --no-check-certificate -q https://ftp1.cptec.inpe.br/pesquisa/grpeta/VIII-WorkEta/CI/atmos/ETAwrk/ERA5_2024041500.ctl

echo -e "\nDescompactando arquivos em $DEST_DIR_ATMOS"
for file in *.tar.gz; do
    if [[ -f "$file" ]]; then
        echo "Descompactando $file..."
        tar -zxf "$file"
        if [[ $? -eq 0 ]]; then
            rm "$file"
        else
            echo "Erro ao descompactar $file. O arquivo não será removido."
        fi
    fi
done

# Volta para o diretório anterior
cd - > /dev/null

# --- Processamento dos arquivos de 'sst' ---
echo -e "\nDescompactando arquivos em $DEST_DIR_SST"
cd "$DEST_DIR_SST" || exit 1
for file in *.tar.gz; do
    if [[ -f "$file" ]]; then
        echo "Descompactando $file..."
        tar -zxf "$file"
        if [[ $? -eq 0 ]]; then
            rm "$file"
        else
            echo "Erro ao descompactar $file. O arquivo não será removido."
        fi
    fi
done

echo -e "\nDownload dos dados do ERA5 concluido."
