From dab3a6b8f2e062d6ea742fefe0c600d6d76cefe9 Mon Sep 17 00:00:00 2001 From: Floke Date: Thu, 24 Apr 2025 06:32:25 +0000 Subject: [PATCH] bugfix --- brancheneinstufung.py | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/brancheneinstufung.py b/brancheneinstufung.py index b5e1e9f5..c86cc303 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -3270,26 +3270,28 @@ class DataProcessor: except KeyError as e: logging.critical(f"FEHLER: Benötigte Spalte '{e}' fehlt."); return except Exception as e: logging.critical(f"FEHLER beim Holen der Spaltenbuchstaben: {e}"); return -for i, row in enumerate(data_rows): +for i, row in enumerate(data_rows): # <= for-Schleife beginnt hier row_num_in_sheet = i + header_rows + 1 if limit is not None and rows_processed_count >= limit: - logging.info(f"Limit ({limit}) für Website Lookup erreicht.") - break + logging.info(f"Limit ({limit}) für Website Lookup erreicht.") + break # Sicherstellen, dass die Zeile lang genug ist, um auf die benötigten Spalten zuzugreifen - # Korrigierte Zeilen - keine Anweisung nach dem Semikolon - max_needed_idx = max(website_col_idx, name_col_idx) # Zuweisung auf eigener Zeile - if len(row) <= max_needed_idx: # if-Statement auf neuer Zeile - # Die folgenden Zeilen müssen unter dem if eingerückt sein + max_needed_idx = max(website_col_idx, name_col_idx) + if len(row) <= max_needed_idx: logging.debug(f"Zeile {row_num_in_sheet}: Übersprungen (Zeile zu kurz).") - continue # continue gehört auch unter das if + continue # continue gehört unter das if current_website = row[website_col_idx] if len(row) > website_col_idx else "" + if not current_website or str(current_website).strip().lower() == "k.a.": company_name = row[name_col_idx] if len(row) > name_col_idx else "" - if not company_name or str(company_name).strip() == "": logging.warning(f"Zeile {row_num_in_sheet}: Übersprungen (kein Firmenname)."); continue + if not company_name or str(company_name).strip() == "": + logging.warning(f"Zeile {row_num_in_sheet}: Übersprungen (kein Firmenname).") + continue # continue gehört unter das if + logging.info(f"Zeile {row_num_in_sheet}: Suche Website für '{company_name}'...") new_website = serp_website_lookup(company_name) # Globale Funktion mit Retry @@ -3297,18 +3299,27 @@ for i, row in enumerate(data_rows): if new_website != "k.A.": updates.append({'range': f'{website_col_letter}{row_num_in_sheet}', 'values': [[new_website]]}) - logging.info(f"Zeile {row_num_in_sheet}: Neue Website '{new_website}' gefunden und zum Update hinzugefügt.") - else: logging.info(f"Zeile {row_num_in_sheet}: Keine Website gefunden.") + logging.info(f"Zeile {row_num_in_sheet}: Neue Website '{new_website}' gefunden.") + else: + logging.info(f"Zeile {row_num_in_sheet}: Keine Website gefunden.") time.sleep(getattr(Config, 'RETRY_DELAY', 5) * 0.3) # Pause nach jedem SERP-Aufruf - if updates: + # <= Hier endet die for-Schleife. Die folgenden Blöcke müssen auf dieser Ebene (derselben wie for) eingerückt sein. + + if updates: # <= DIESER BLOCK muss auf derselben Ebene wie die for-Schleife beginnen logging.info(f"Sende Batch-Update für {len(updates)} Zellen ({rows_processed_count} Zeilen geprüft)...") success = self.sheet_handler.batch_update_cells(updates) - if success: logging.info(f"Batch-Update erfolgreich.") - else: logging.error(f"FEHLER beim Batch-Update.") - else: logging.info("Keine fehlenden Websites gefunden oder keine Updates nötig.") - logging.info(f"Modus 'website_lookup' abgeschlossen. {rows_processed_count} Zeilen geprüft.") + if success: + logging.info(f"Batch-Update erfolgreich.") + else: # <= Dieses else gehört zum if success: + logging.error(f"FEHLER beim Batch-Update.") + + else: # <= DIESER BLOCK gehört zum if updates: + logging.info("Keine fehlenden Websites gefunden oder keine Updates nötig.") + + logging.info(f"Modus 'website_lookup' abgeschlossen. {rows_processed_count} Zeilen geprüft.") # <= Diese Zeile gehört zur Methode, auf derselben Ebene wie das if updates: + # process_find_wiki_serp Methode def process_find_wiki_serp(self, limit=None, min_employees=500, min_umsatz=200): # <<< Methode in DataProcessor