#!/usr/bin/env python
import os
import sys
import h5py
import argparse
import numpy as np
import datetime
from PIL import Image
from pyunpack import Archive
from rich.progress import track
from rich import print
from datetime import datetime
import time


"""pre.py:

Como usar: faça ./pre.py YYYY MM DD VIIRS ECMWF INPE METEOSAT BAIXA GERA
ex:

./pre.py 

"""
__author__ = "Luiz Flávio Rodrigues"
__copyright__ = "Copyright 2021, INPE"
__credits__ = ["Luiz Flavio Rodrigues"]
__license__ = "CC-GPL"
__version__ = "1.0"
__maintainer__ = "Luiz Flávio Rodrigues"
__email__ = "luiz.rodrigues@inpe.br"
__status__ = "Production"

def main(args):

    inicio = time.time()

    ano=int(args[1])
    mes=int(args[2])
    dia=int(args[3])
    viirs = args[4]
    ecmwf = args[5]
    inpe = args[6]
    meteosat = args[7]
    gfs = args[8]
    geos = args[9]
    baixa = args[10]
    gera = args[11]

    #Diretorios de saida
    dir_out = "/share/bramsrd/dist/BRAMS/data/FOCOS/"
    dir_in =  "/share/bramsrd/dist/BRAMS/data/"
    data_solicitada = "{0:04d}{1:02d}{2:02d}".format(ano,mes,dia)

    print("")
    print("[bold green] ____  ____      _    __  __ ____  [/bold green]")
    print("[bold green]| __ )|  _ \    / \  |  \/  / ___| [/bold green]")
    print("[bold green]|  _ \| |_) |  / _ \ | |\/| \___ \ [/bold green]")
    print("[bold green]| |_) |  _ <  / ___ \| |  | |___) |[/bold green]")
    print("[bold green]|____/|_| \_\/_/   \_\_|  |_|____/ [/bold green]")
    print("[bold green] Script para rodada do pre - chem [/bold green]")
    print("Rev 1.0 - e-mail: luiz.rodrigues@inpe.br")
    print("Author: Luiz Flávio Rodrigues INPE:copyright:")                               
    print("")
    print("")

    #checando se a data é futura
    agora = datetime.now().date()
    data_para_baixar = "{0:02d}/{1:02d}/{2:04d}".format(dia,mes,ano)
    dpb = datetime.strptime(data_para_baixar,"%d/%m/%Y").date()
    if dpb>agora:
        print("[bold red]*** A data solicitada é maior que a data de hoje! ***[/bold red]")
        print("Os dados de satélites são acumulados para o dia anterior!")
        sys.exit(-1)

    #Checando a existência dos diretórios de saida dos dados
    #Se não existir cria
    dir_out_data = dir_out+data_solicitada
    if not os.path.exists(dir_out_data):
        os.mkdir(dir_out_data)
    else:
        print("[yellow]*** diretório "+dir_out_data+" já existe! ***[/yellow]")

    dir_out_data = dir_out+data_solicitada+"/DSA"
    if not os.path.exists(dir_out_data):
        os.mkdir(dir_out_data)
    else:
        print("[yellow]*** diretório "+dir_out_data+" já existe! ***[/yellow]")
    dir_out_data = dir_out+data_solicitada+"/EXTRA"
    if not os.path.exists(dir_out_data):
        os.mkdir(dir_out_data)
    else:
        print("[yellow]*** diretório "+dir_out_data+" já existe! ***[/yellow]")
    dir_out_data = dir_out+data_solicitada+"/GOES-CAMS"
    if not os.path.exists(dir_out_data):
        os.mkdir(dir_out_data)
    else:
        print("[yellow]*** diretório "+dir_out_data+" já existe! ***[/yellow]")        
    dir_out_data = dir_out+data_solicitada+"/MODIS"
    if not os.path.exists(dir_out_data):
        os.mkdir(dir_out_data)  
    else:
        print("[yellow]*** diretório "+dir_out_data+" já existe! ***[/yellow]")


    dir_out_data = dir_in+"/GEOS/"+data_solicitada
    if not os.path.exists(dir_out_data):
        os.mkdir(dir_out_data)  
    else:
        print("[yellow]*** diretório "+dir_out_data+" já existe! ***[/yellow]")

    dir_out_data = dir_in+"/GFS/"+data_solicitada
    if not os.path.exists(dir_out_data):
        os.mkdir(dir_out_data)  
    else:
        print("[yellow]*** diretório "+dir_out_data+" já existe! ***[/yellow]")

    tempo1 = time.time()
    print("Tempo gasto na criação dos diretórios: {0:05d} s".format(int(tempo1-inicio)))
    
    #Chamando o baixa e passando os argumentos
    if baixa == "s" or baixa =="S":
        print("Baixando os dados para a data...")
        cmd = "./baixaNew.py {0:04d} {1:02d} {2:02d} {3:1s} {4:1s} {5:1s} {6:1s} {7:1s} {8:1s}".format(ano,mes,dia,viirs,ecmwf,inpe,meteosat,gfs,geos)
        ret = os.system(cmd)

    tempo2 = time.time()
    print("Tempo gasto para baixar os dados: {0:05d} s".format(int(tempo2-tempo1)))

    if gera == "s" or gera == "S":
        print("Gerando os focos para a data...")
        cmd = "./geraFocos.py {0:04d} {1:02d} {2:02d} {3:1s} {4:1s} {5:1s} {6:1s}".format(ano,mes,dia,viirs,ecmwf,inpe,meteosat)
        ret = os.system(cmd)       

    tempo3 = time.time()
    print("Tempo gasto para gerar os focos: {0:05d} s".format(int(tempo3-tempo2)))

    tempo4 = time.time()
    print("Tempo total: {0:05d} s".format(int(tempo4-inicio))) 
    
    
if __name__ == '__main__':
    sys.exit(main(sys.argv))


