diff --git a/src/exchanges/ls.py b/src/exchanges/ls.py index 9e23afa..9829548 100644 --- a/src/exchanges/ls.py +++ b/src/exchanges/ls.py @@ -1,10 +1,13 @@ import requests import csv import io +import logging from datetime import datetime from typing import List from .base import BaseExchange, Trade +logger = logging.getLogger(__name__) + class LSExchange(BaseExchange): @property def name(self) -> str: @@ -15,23 +18,23 @@ class LSExchange(BaseExchange): if include_yesterday: endpoints.append("https://www.ls-x.de/_rpc/json/.lstc/instrument/list/lstctradesyesterday") endpoints.append("https://www.ls-x.de/_rpc/json/.lstc/instrument/list/lsxtradesyesterday") - + headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', 'Accept': 'application/json', 'Referer': 'https://www.ls-tc.de/' } - + all_trades = [] for url in endpoints: try: response = requests.get(url, headers=headers) response.raise_for_status() - + f = io.StringIO(response.text) # Header: isin;displayName;tradeTime;price;currency;size;orderId reader = csv.DictReader(f, delimiter=';') - + for item in reader: try: price = float(item['price'].replace(',', '.')) @@ -39,11 +42,11 @@ class LSExchange(BaseExchange): isin = item['isin'] symbol = item['displayName'] time_str = item['tradeTime'] - + # Format: 2026-01-23T07:30:00.992000Z ts_str = time_str.replace('Z', '+00:00') timestamp = datetime.fromisoformat(ts_str) - + all_trades.append(Trade( exchange=self.name, symbol=symbol, @@ -52,8 +55,9 @@ class LSExchange(BaseExchange): quantity=quantity, timestamp=timestamp )) - except Exception: + except (ValueError, KeyError) as e: + logger.debug(f"Fehler beim Parsen einer LS-Zeile: {e}") continue except Exception as e: - print(f"Error fetching LS data from {url}: {e}") + logger.error(f"Fehler beim Abrufen von LS-Daten von {url}: {e}") return all_trades