#!/usr/bin/env python3
from tradingview_ta import TA_Handler, Interval
import pandas as pd
import json
from datetime import datetime
import logging
from pathlib import Path

# Konfiguracja
BASE_DIR = '/var/www/html/analiza'
DATA_DIR = f'{BASE_DIR}/data'
LOG_DIR = f'{BASE_DIR}/logs'

# Tworzenie katalogów
for dir_path in [DATA_DIR, LOG_DIR]:
    Path(dir_path).mkdir(parents=True, exist_ok=True)
    print(f"Utworzono lub sprawdzono katalog: {dir_path}")

# Konfiguracja logowania
logging.basicConfig(
    filename=f'{LOG_DIR}/eurusd_fetcher.log',
    format='%(asctime)s - %(levelname)s - %(message)s',
    level=logging.INFO
)

# Dodaj także wyświetlanie logów w konsoli
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)
logging.getLogger('').addHandler(console_handler)

def fetch_eurusd_data():
    """Pobieranie danych EURUSD z TradingView"""
    try:
        print("Próba połączenia z TradingView...")
        handler = TA_Handler(
            symbol="EURUSD",
            exchange="FX_IDC",
            screener="forex",
            interval=Interval.INTERVAL_1_DAY
        )
        
        print("Pobieranie analizy...")
        analysis = handler.get_analysis()
        
        data = {
            'symbol': 'EURUSD',
            'timestamp': datetime.now().isoformat(),
            'close': analysis.indicators['close'],
            'open': analysis.indicators['open'],
            'high': analysis.indicators['high'],
            'low': analysis.indicators['low'],
            'volume': analysis.indicators['volume']
        }
        
        # Zapis do JSON
        output_file = f"{DATA_DIR}/eurusd_latest.json"
        with open(output_file, 'w') as f:
            json.dump(data, f, indent=2)
            
        print(f"Dane zapisano do pliku: {output_file}")
        print(f"Pobrane dane: {json.dumps(data, indent=2)}")
        logging.info(f"Pobrano dane EURUSD: {data['close']}")
        return data
        
    except Exception as e:
        error_msg = f"Błąd podczas pobierania danych: {str(e)}"
        print(error_msg)
        logging.error(error_msg)
        return None

def main():
    print("=== Start programu ===")
    logging.info("Rozpoczęcie pobierania danych EURUSD")
    result = fetch_eurusd_data()
    if result:
        print(f"Sukces! Aktualny kurs EURUSD: {result['close']}")
    else:
        print("Wystąpił błąd podczas pobierania danych")
    logging.info("Zakończenie pobierania danych")
    print("=== Koniec programu ===")

if __name__ == "__main__":
    main()
