This commit is contained in:
@@ -147,21 +147,37 @@ class GettexExchange(BaseExchange):
|
||||
if len(parts) >= 4:
|
||||
date_str = parts[1] # YYYYMMDD
|
||||
|
||||
if not date_str:
|
||||
print(f"[GETTEX] WARNING: Could not extract date from filename: {filename}")
|
||||
|
||||
# Debug: Zeige erste Zeile
|
||||
if lines and len(lines) > 0:
|
||||
print(f"[GETTEX] First line sample: {lines[0][:100]}")
|
||||
|
||||
# Gettex CSV hat KEINEN Header!
|
||||
# Format: ISIN,Zeit,Währung,Preis,Menge
|
||||
# z.B.: DE000BAY0017,09:15:03.638460,EUR,45.775,22
|
||||
for line in lines:
|
||||
parse_errors = 0
|
||||
for i, line in enumerate(lines):
|
||||
if not line.strip():
|
||||
continue
|
||||
try:
|
||||
trade = self._parse_headerless_csv_line(line, date_str)
|
||||
if trade:
|
||||
trades.append(trade)
|
||||
except Exception:
|
||||
else:
|
||||
if i < 3: # Zeige nur erste paar Fehler
|
||||
print(f"[GETTEX] Failed to parse line {i+1}: {line[:80]}")
|
||||
except Exception as e:
|
||||
parse_errors += 1
|
||||
if i < 3:
|
||||
print(f"[GETTEX] Exception parsing line {i+1}: {e}, line: {line[:80]}")
|
||||
continue
|
||||
|
||||
if trades:
|
||||
print(f"[GETTEX] Parsed {len(trades)} trades from {filename}")
|
||||
print(f"[GETTEX] Parsed {len(trades)} trades from {filename} ({len(lines)} lines, {parse_errors} errors)")
|
||||
elif len(lines) > 0:
|
||||
print(f"[GETTEX] No trades parsed from {filename} ({len(lines)} lines, {parse_errors} errors)")
|
||||
|
||||
except requests.exceptions.HTTPError as e:
|
||||
if e.response.status_code != 404:
|
||||
@@ -189,11 +205,18 @@ class GettexExchange(BaseExchange):
|
||||
qty_str = parts[4].strip()
|
||||
|
||||
# Validierung
|
||||
if not isin or len(isin) != 12: # ISIN ist immer 12 Zeichen
|
||||
if not isin:
|
||||
return None
|
||||
|
||||
price = float(price_str)
|
||||
quantity = float(qty_str)
|
||||
# ISIN kann 12 Zeichen sein, aber nicht immer (manchmal kürzer bei Testdaten)
|
||||
if len(isin) < 10:
|
||||
return None
|
||||
|
||||
try:
|
||||
price = float(price_str)
|
||||
quantity = float(qty_str)
|
||||
except ValueError:
|
||||
return None
|
||||
|
||||
if price <= 0 or quantity <= 0:
|
||||
return None
|
||||
@@ -231,7 +254,8 @@ class GettexExchange(BaseExchange):
|
||||
timestamp=timestamp
|
||||
)
|
||||
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
# Stille Fehlerbehandlung - nur bei Debug
|
||||
return None
|
||||
|
||||
def _parse_csv_row(self, row: dict) -> Optional[Trade]:
|
||||
|
||||
Reference in New Issue
Block a user