#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import requests
import csv
from datetime import datetime
import os
import time  # Importar a biblioteca 'time'

# --- CONFIGURAÇÕES ---
API_URL = 'https://bots.net.br/liveupdate/ls/?action=getData'
# Caminho absoluto para o arquivo CSV, crucial para o Cron.
CSV_FILE_PATH = '/home/jrussi/web/cotacoes.csv'
# --------------------

def fetch_data():
    """Busca os dados da API e retorna uma lista de dicionários ou None em caso de erro."""
    try:
        response = requests.get(API_URL, timeout=15)
        response.raise_for_status()
        return response.json()
    except requests.exceptions.RequestException as e:
        print(f"[{datetime.now()}] Erro de rede ao buscar dados: {e}")
        return None
    except Exception as e:
        print(f"[{datetime.now()}] Erro inesperado ao buscar dados: {e}")
        return None

def save_data_to_csv(data):
    """Salva os dados em um arquivo CSV, adicionando um timestamp a cada linha."""
    if not data:
        print(f"[{datetime.now()}] Nenhum dado para salvar.")
        return

    os.makedirs(os.path.dirname(CSV_FILE_PATH), exist_ok=True)
    
    fieldnames = ['timestamp'] + list(data[0].keys())
    file_exists = os.path.isfile(CSV_FILE_PATH)

    try:
        with open(CSV_FILE_PATH, mode='a', newline='', encoding='utf-8') as csvfile:
            writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
            if not file_exists:
                writer.writeheader()

            current_timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
            for row in data:
                row_with_timestamp = {'timestamp': current_timestamp, **row}
                writer.writerow(row_with_timestamp)
        
        print(f"[{datetime.now()}] {len(data)} registros salvos com sucesso.")
    except Exception as e:
        print(f"[{datetime.now()}] Erro ao salvar dados: {e}")


def run_collection_cycle():
    """Executa um ciclo completo de coleta de dados."""
    api_data = fetch_data()
    if api_data:
        save_data_to_csv(api_data)

if __name__ == "__main__":
    # Primeira execução (no início do minuto)
    run_collection_cycle()
    
    # Pausa por 30 segundos
    time.sleep(30)
    
    # Segunda execução (no meio do minuto)
    run_collection_cycle()