From df23fbd9e5f3ae731fa68964e52f83de315dd2c2 Mon Sep 17 00:00:00 2001 From: Floke Date: Thu, 10 Apr 2025 10:28:27 +0000 Subject: [PATCH] bugfix --- brancheneinstufung.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/brancheneinstufung.py b/brancheneinstufung.py index 0f9d1ccd..b83244f2 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -535,7 +535,7 @@ def process_verification_only(): """ Überarbeiteter Batch‑Prozess (Modus 51): - Fragt in der Konsole ab, wie viele Zeilen insgesamt verarbeitet werden sollen. - - Alle Zeilen, bei denen Spalte AO (Index 40) leer ist (oder die Spaltenanzahl < 41 beträgt), werden verarbeitet. + - Alle Zeilen, bei denen Spalte AO (Index 40) nicht vorhanden oder leer ist, werden verarbeitet. - Die zu verarbeitenden Zeilen werden in Paketen der Größe Config.BATCH_SIZE (z. B. 10 Zeilen) gebündelt. - Für jedes Batch wird ein aggregierter Prompt erstellt, an ChatGPT gesendet und die aggregierte Antwort zeilenweise geparst. @@ -555,27 +555,28 @@ def process_verification_only(): total_rows = None gc = gspread.authorize(ServiceAccountCredentials.from_json_keyfile_name( - Config.CREDENTIALS_FILE, ["https://www.googleapis.com/auth/spreadsheets"])) + Config.CREDENTIALS_FILE, ["https://www.googleapis.com/auth/spreadsheets"])) sh = gc.open_by_url(Config.SHEET_URL) main_sheet = sh.sheet1 data = main_sheet.get_all_values() - # Definiere die Anzahl der zu verarbeitenden Zeilen. - available_rows = len(data) - 1 # ohne Header + # Bestimme die Anzahl der zu verarbeitenden Zeilen (ohne Header) + available_rows = len(data) - 1 if total_rows is not None and total_rows < available_rows: available_rows = total_rows batch_size = Config.BATCH_SIZE # z. B. 10, einstellbar in der Config batches = [] row_numbers = [] - # VERARBEITE JEDEN Datensatz, bei dem entweder nicht mindestens 41 Spalten existieren oder Spalte AO leer ist. + + # Verarbeite jede Zeile (Index ab 2, da Header in Zeile 1) for i, row in enumerate(data[1:], start=2): - if i > available_rows + 1: + if i > available_rows + 1: # +1 wegen Header break - # Überspringe Zeilen, bei denen Spalte AO (Index 40) bereits gefüllt ist. + # Überspringe Zeilen, bei denen Spalte AO (Index 40) existiert und nicht leer ist. if len(row) >= 41 and row[40].strip() != "": continue - # Nehme die Zeile in den Batch auf. + # Nimm diese Zeile in den Batch auf – keine weiteren Bedingungen! entry_text = ( f"Eintrag {i}:\n" f"Firmenname: {row[1] if len(row) > 1 else ''}\n" @@ -587,6 +588,7 @@ def process_verification_only(): ) batches.append(entry_text) row_numbers.append(i) + if len(batches) == batch_size: aggregated_prompt = ( "Du bist ein Experte in der Verifizierung von Wikipedia-Artikeln für Unternehmen. " @@ -654,7 +656,6 @@ def process_verification_only(): main_sheet.update(values=[[wiki_confirm]], range_name=f"S{current_row}") main_sheet.update(values=[[alt_article]], range_name=f"T{current_row}") main_sheet.update(values=[[wiki_explanation]], range_name=f"U{current_row}") - # Setze die Spalten V bis Y (Platzhalter) auf leere Strings main_sheet.update(values=[["", "", "", ""]], range_name=f"V{current_row}:Y{current_row}") debug_print(f"Zeile {current_row} verifiziert: Antwort: {answer}") except Exception as e: @@ -732,6 +733,7 @@ def process_verification_only(): time.sleep(Config.RETRY_DELAY) debug_print("Verifizierungs-Batch abgeschlossen.") + # ==================== List Metatitel, Description und Überschriften aus Websiten aus ==================== def scrape_website_details(url): """