This commit is contained in:
2025-04-22 06:17:23 +00:00
parent c8cc8cc435
commit 5ddd8ee065

View File

@@ -321,6 +321,11 @@ def process_find_wiki_with_serp(sheet_handler, row_limit=None, min_employees=500
über SerpAPI und trägt gefundene URLs in Spalte M ein. Setzt ReEval-Flag (A) über SerpAPI und trägt gefundene URLs in Spalte M ein. Setzt ReEval-Flag (A)
und löscht Timestamps (AN, AO) für gefundene Einträge. und löscht Timestamps (AN, AO) für gefundene Einträge.
Merkt sich in Spalte AY, wann die Suche durchgeführt wurde. Merkt sich in Spalte AY, wann die Suche durchgeführt wurde.
Args:
sheet_handler (GoogleSheetHandler): Initialisierte Instanz.
row_limit (int, optional): Maximale Anzahl zu prüfender Zeilen. Defaults to None.
min_employees (int, optional): Mindestanzahl Mitarbeiter (Spalte K) als Filter. Defaults to 500.
""" """
logging.info(f"Starte Modus 'find_wiki_serp': Suche fehlende Wiki-URLs für Firmen > {min_employees} MA...") logging.info(f"Starte Modus 'find_wiki_serp': Suche fehlende Wiki-URLs für Firmen > {min_employees} MA...")
@@ -351,6 +356,7 @@ def process_find_wiki_with_serp(sheet_handler, row_limit=None, min_employees=500
logging.critical(f"FEHLER beim Holen der Spaltenbuchstaben: {e}") logging.critical(f"FEHLER beim Holen der Spaltenbuchstaben: {e}")
return return
# --- HIER WIRD all_sheet_updates definiert ---
all_sheet_updates = [] all_sheet_updates = []
processed_rows = 0 # Zählt Zeilen, für die eine Suche durchgeführt wurde processed_rows = 0 # Zählt Zeilen, für die eine Suche durchgeführt wurde
found_urls = 0 # Zählt Zeilen, wo eine URL gefunden wurde found_urls = 0 # Zählt Zeilen, wo eine URL gefunden wurde
@@ -375,6 +381,7 @@ def process_find_wiki_with_serp(sheet_handler, row_limit=None, min_employees=500
continue # Nächste Zeile, diese wurde schon geprüft continue # Nächste Zeile, diese wurde schon geprüft
# --- ENDE NEUE PRÜFUNG --- # --- ENDE NEUE PRÜFUNG ---
# Prüfe, ob Zeile überhaupt verarbeitet werden soll
try: try:
# 1. Mitarbeiterzahl prüfen # 1. Mitarbeiterzahl prüfen
ma_val_str = row[col_indices["K"]] if len(row) > col_indices["K"] else "0" ma_val_str = row[col_indices["K"]] if len(row) > col_indices["K"] else "0"
@@ -389,6 +396,7 @@ def process_find_wiki_with_serp(sheet_handler, row_limit=None, min_employees=500
# 2. Prüfen, ob Wiki URL (M) leer oder "k.A." ist # 2. Prüfen, ob Wiki URL (M) leer oder "k.A." ist
m_value = row[col_indices["M"]] if len(row) > col_indices["M"] else "" m_value = row[col_indices["M"]] if len(row) > col_indices["M"] else ""
# Prüfe auf leer UND 'k.a.' (case-insensitive)
if m_value and m_value.strip().lower() != "k.a.": if m_value and m_value.strip().lower() != "k.a.":
skipped_m_filled_count += 1 skipped_m_filled_count += 1
continue continue
@@ -401,9 +409,9 @@ def process_find_wiki_with_serp(sheet_handler, row_limit=None, min_employees=500
# --- SerpAPI Suche durchführen --- # --- SerpAPI Suche durchführen ---
logging.info(f"Zeile {row_num_in_sheet}: Suche Wiki-URL für '{company_name}' (MA: {ma_val})...") logging.info(f"Zeile {row_num_in_sheet}: Suche Wiki-URL für '{company_name}' (MA: {ma_val})...")
wiki_url_found = serp_wikipedia_lookup(company_name) wiki_url_found = serp_wikipedia_lookup(company_name) # Annahme: nutzt logging
processed_rows += 1 # Zähle die durchgeführte Suche processed_rows += 1 # Zähle die durchgeführte Suche
time.sleep(1.5) # Pause time.sleep(1.5) # Pause zwischen SerpAPI-Aufrufen
# --- Updates vorbereiten --- # --- Updates vorbereiten ---
# Timestamp AY IMMER setzen, um die Suche zu markieren # Timestamp AY IMMER setzen, um die Suche zu markieren
@@ -424,27 +432,31 @@ def process_find_wiki_with_serp(sheet_handler, row_limit=None, min_employees=500
# Optional: Marker in M schreiben? Vorerst nicht, AY reicht. # Optional: Marker in M schreiben? Vorerst nicht, AY reicht.
# row_updates.append({'range': f'{col_letters["M"]}{row_num_in_sheet}', 'values': [['k.A. (SerpAPI Searched)']]}) # row_updates.append({'range': f'{col_letters["M"]}{row_num_in_sheet}', 'values': [['k.A. (SerpAPI Searched)']]})
# Füge die Updates für diese Zeile zur Gesamtliste hinzu
all_sheet_updates.extend(row_updates) all_sheet_updates.extend(row_updates)
except Exception as e: except Exception as e:
# Logge Fehler und fahre mit der nächsten Zeile fort
logging.exception(f"Unerwarteter Fehler bei Verarbeitung von Zeile {row_num_in_sheet}: {e}") logging.exception(f"Unerwarteter Fehler bei Verarbeitung von Zeile {row_num_in_sheet}: {e}")
continue # Gehe zur nächsten Zeile
# --- Batch Update am Ende --- # --- Batch Update am Ende ---
if all_sheet_updates: # Dieser Block muss auf derselben Einrückungsebene wie die for-Schleife sein!
if all_sheet_updates:
logging.info(f"Sende Batch-Update für {processed_rows} geprüfte Zeilen ({found_urls} URLs gefunden, {len(all_sheet_updates)} Zellen)...") logging.info(f"Sende Batch-Update für {processed_rows} geprüfte Zeilen ({found_urls} URLs gefunden, {len(all_sheet_updates)} Zellen)...")
success = sheet_handler.batch_update_cells(all_sheet_updates) success = sheet_handler.batch_update_cells(all_sheet_updates)
if success: if success:
logging.info(f"Sheet-Update für 'find_wiki_serp' erfolgreich.") logging.info(f"Sheet-Update für 'find_wiki_serp' erfolgreich.")
# Fehler wird von batch_update_cells geloggt # Fehler wird von batch_update_cells geloggt
else: else:
logging.info("Keine Zeilen gefunden, für die eine SerpAPI Wiki-Suche durchgeführt werden musste/konnte.") logging.info("Keine Zeilen gefunden, für die eine SerpAPI Wiki-Suche durchgeführt werden musste/konnte.")
logging.info(f"Modus 'find_wiki_serp' abgeschlossen.") logging.info(f"Modus 'find_wiki_serp' abgeschlossen.")
logging.info(f" Durchgeführte Suchen in diesem Lauf: {processed_rows}") logging.info(f" Durchgeführte Suchen in diesem Lauf: {processed_rows}")
logging.info(f" Gefundene & eingetragene URLs: {found_urls}") logging.info(f" Gefundene & eingetragene URLs: {found_urls}")
logging.info(f" Übersprungen (AY bereits gesetzt): {skipped_timestamp_ay}") logging.info(f" Übersprungen (AY bereits gesetzt): {skipped_timestamp_ay}")
logging.info(f" Übersprungen (MA <= {min_employees}): {skipped_employee_count}") logging.info(f" Übersprungen (MA <= {min_employees}): {skipped_employee_count}")
logging.info(f" Übersprungen (M bereits gefüllt): {skipped_m_filled_count}") logging.info(f" Übersprungen (M bereits gefüllt): {skipped_m_filled_count}")
def prepare_data_for_modeling(sheet_handler): def prepare_data_for_modeling(sheet_handler):
""" """