This commit is contained in:
2025-04-04 09:35:37 +00:00
parent 1fbea1c19d
commit 42fe0064fc

View File

@@ -14,7 +14,7 @@ import csv
# ==================== KONFIGURATION ====================
class Config:
VERSION = "v1.3.13" # v1.3.13: Neuer Modus 8 integriert (Batch-Token-Zählung in Spalte AQ)
VERSION = "v1.3.13" # v1.3.13: Neuer Modus 8 (Batch-Token-Zählung in Spalte AQ) & Modus 51 (nur Verifizierung)
LANG = "de"
CREDENTIALS_FILE = "service_account.json"
SHEET_URL = "https://docs.google.com/spreadsheets/d/1u_gHr9JUfmV1-iviRzbSe3575QEp7KLhK5jFV_gJcgo"
@@ -373,7 +373,7 @@ def search_linkedin_contact(company_name, website, position_query):
except Exception as e:
debug_print("Fehler beim Lesen des SerpAPI-Schlüssels: " + str(e))
return None
search_name = company_name
search_name = company_name # Hier kannst du auch die Kurzform verwenden, falls vorhanden.
query = f'site:linkedin.com/in "{position_query}" "{search_name}"'
debug_print(f"Erstelle LinkedIn-Query: {query}")
params = {
@@ -446,16 +446,9 @@ def count_linkedin_contacts(company_name, website, position_query):
debug_print(f"Fehler bei der SerpAPI-Suche (Count): {e}")
return 0
# ==================== NEUER MODUS 51: VERIFIZIERUNG (Nur Wikipedia + Brancheneinordnung) ====================
def process_verification_only():
debug_print("Starte Verifizierungs-Modus (Modus 51)...")
processor = DataProcessor()
for i, row in enumerate(processor.sheet_handler.sheet_values[1:], start=2):
if len(row) <= 25 or row[24].strip() == "":
processor._process_verification_row(i, row)
debug_print("Verifizierungs-Modus abgeschlossen.")
# ==================== NEUE FUNKTION: _process_verification_row ====================
def _process_verification_row(self, row_num, row_data):
# Verarbeitung nur bis Spalte Y (Begründung Abweichung Branche)
company_name = row_data[1] if len(row_data) > 1 else ""
website = row_data[3] if len(row_data) > 3 else ""
current_dt = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
@@ -505,7 +498,8 @@ def _process_verification_row(self, row_num, row_data):
debug_print(f"Zeile {row_num} verifiziert: URL: {wiki_data.get('url', 'k.A.')}, Branche: {wiki_data.get('branche', 'k.A.')}")
time.sleep(Config.RETRY_DELAY)
DataProcessor._process_verification_row = _process_verification_row
# Nach Abschluss der DataProcessor-Klasse wird diese Methode zugewiesen:
# (Siehe unten nach der Klassendefinition)
# ==================== NEUER MODUS 8: BATCH-PROZESSING MIT TOKEN-ZÄHLUNG ====================
def process_batch_token_count(batch_size=10):
@@ -520,29 +514,26 @@ def process_batch_token_count(batch_size=10):
sh = gc.open_by_url(Config.SHEET_URL)
main_sheet = sh.sheet1
data = main_sheet.get_all_values()
# Gehe in Schritten von batch_size Zeilen durch den Datensatz
for i in range(2, len(data)+1, batch_size):
batch_rows = data[i-1:i-1+batch_size]
aggregated_prompt = ""
for row in batch_rows:
# Verwende Spalte B (Firmenname), C (Kurzform), D (Website), E (Ort), F (Beschreibung) und G (Aktuelle Branche)
info = []
if len(row) > 1:
info.append(row[1])
info.append(row[1]) # Firmenname
if len(row) > 2:
info.append(row[2])
info.append(row[2]) # Kurzform
if len(row) > 3:
info.append(row[3])
info.append(row[3]) # Website
if len(row) > 4:
info.append(row[4])
info.append(row[4]) # Ort
if len(row) > 5:
info.append(row[5])
info.append(row[5]) # Beschreibung
if len(row) > 6:
info.append(row[6])
info.append(row[6]) # Aktuelle Branche
aggregated_prompt += "; ".join(info) + "\n"
token_count = count_tokens(aggregated_prompt)
debug_print(f"Batch beginnend in Zeile {i}: {token_count} Tokens")
# Aktualisiere Spalte AQ für alle Zeilen im Batch
for j in range(i, min(i+batch_size, len(data)+1)):
main_sheet.update(values=[[str(token_count)]], range_name=f"AQ{j}")
time.sleep(Config.RETRY_DELAY)
@@ -919,6 +910,9 @@ class DataProcessor:
f"Servicetechniker-Schätzung: {st_estimate if 'st_estimate' in locals() else 'k.A.'}")
time.sleep(Config.RETRY_DELAY)
# Hier wird _process_verification_row nach der Definition von DataProcessor zugewiesen.
DataProcessor._process_verification_row = _process_verification_row
# ==================== NEUER MODUS 6: CONTACT RESEARCH (via SerpAPI) ====================
def process_contact_research():
debug_print("Starte Contact Research (Modus 6)...")