diff --git a/brancheneinstufung.py b/brancheneinstufung.py index 9b88a87f..c9791783 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -29,6 +29,7 @@ import csv import gender_guesser.detector as gender from urllib.parse import urlparse, urlencode from difflib import SequenceMatcher +import argparse # Optional: tiktoken für Token-Zählung (Modus 8) try: @@ -2349,38 +2350,56 @@ class DataProcessor: # ----------------- Main-Funktion ----------------- def main(): global MODE, LOG_FILE - print("Bitte wählen Sie den Betriebsmodus:") - print("wiki: Nur Wikipedia-Verifizierung (Batch)") - print("website: Nur Website-Scraping (Batch)") - print("branch: Nur Brancheneinschätzung (Batch)") - print("combined: Alle Funktionen (Wikipedia, Website, Branch) in einem Durchlauf") - print("1: Vollständige Verarbeitung (alle Funktionen)") - print("11: Re-Evaluation markierter Zeilen (nur 'x' in Spalte A)") - print("21: Website-Scraping Testmodus (nur Website-Rohtext & Zusammenfassung)") - print("22: SERP-API Website Lookup (nur Website-Daten ermitteln)") - print("23: Website Detail Extraction (nur für Zeilen mit 'x')") - print("31: Nur ChatGPT-Auswertung (alle ChatGPT-Routinen)") - print("41: Nur Wikipedia-Scraping") - print("6: Contact Research (LinkedIn)") - print("8: Batch Token-Zählung") - - MODE = input("Geben Sie den Modus ein (z.B. wiki, website, branch, combined oder alte Zahl): ").strip().lower() - if not MODE: - MODE = "combined" + # Argumentparser initialisieren + parser = argparse.ArgumentParser(description="Brancheneinstufung Skript") + parser.add_argument("--mode", type=str, help="Betriebsmodus: wiki, website, branch, combined, etc.") + parser.add_argument("--row_limit", type=int, help="Anzahl der zu verarbeitenden Zeilen/Accounts", default=None) + args = parser.parse_args() + + # Betriebsmodus aus Kommandozeile oder interaktiv ermitteln + if args.mode: + MODE = args.mode.strip().lower() + print(f"Betriebsmodus (aus Kommandozeile): {MODE}") + else: + print("Bitte wählen Sie den Betriebsmodus:") + print("wiki: Nur Wikipedia-Verifizierung (Batch)") + print("website: Nur Website-Scraping (Batch)") + print("branch: Nur Brancheneinschätzung (Batch)") + print("combined: Alle Funktionen (Wikipedia, Website, Branch) in einem Durchlauf") + print("1: Vollständige Verarbeitung (alle Funktionen)") + print("11: Re-Evaluation markierter Zeilen (nur 'x' in Spalte A)") + print("21: Website-Scraping Testmodus (nur Website-Rohtext & Zusammenfassung)") + print("22: SERP-API Website Lookup (nur Website-Daten ermitteln)") + print("23: Website Detail Extraction (nur für Zeilen mit 'x')") + print("31: Nur ChatGPT-Auswertung (alle ChatGPT-Routinen)") + print("41: Nur Wikipedia-Scraping") + print("6: Contact Research (LinkedIn)") + print("8: Batch Token-Zählung") + MODE = input("Geben Sie den Modus ein (z.B. wiki, website, branch, combined oder alte Zahl): ").strip().lower() + if not MODE: + MODE = "combined" + LOG_FILE = create_log_filename(MODE) debug_print(f"Start Betriebsmodus {MODE}") - + for entry in prompt_overview()[1:]: debug_print(f"{entry[0]}: {entry[1]}") - + dp = DataProcessor() - - if MODE in ["wiki", "website", "branch", "combined"]: + + # Row_limit aus Kommandozeile oder interaktiv ermitteln + if args.row_limit is not None: + row_limit = args.row_limit + print(f"Zeilenlimit (aus Kommandozeile): {row_limit}") + else: try: row_limit = int(input("Wie viele Zeilen sollen insgesamt bearbeitet werden? ")) except Exception as e: debug_print(f"Fehler bei der Eingabe der Zeilenanzahl: {e}. Es werden alle Zeilen verarbeitet.") row_limit = None + + # Auswahl des Arbeitsmodus + if MODE in ["wiki", "website", "branch", "combined"]: run_dispatcher(MODE, row_limit) elif MODE == "1": dp.process_rows() @@ -2420,4 +2439,4 @@ def main(): print(f"Verarbeitung abgeschlossen. Logfile: {LOG_FILE}") if __name__ == '__main__': - main() + main() \ No newline at end of file