diff --git a/brancheneinstufung.py b/brancheneinstufung.py index cf8a62bc..eb72f56a 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -12,7 +12,7 @@ import csv # ==================== KONFIGURATION ==================== class Config: - VERSION = "1.1.6" # Neue Version + VERSION = "1.1.6" # Neue Version nach Modus-Erweiterung LANG = "de" CREDENTIALS_FILE = "service_account.json" SHEET_URL = "https://docs.google.com/spreadsheets/d/1u_gHr9JUfmV1-iviRzbSe3575QEp7KLhK5jFV_gJcgo" @@ -81,9 +81,10 @@ class GoogleSheetHandler: self.sheet = gspread.authorize(creds).open_by_url(Config.SHEET_URL).sheet1 self.sheet_values = self.sheet.get_all_values() def get_start_index(self): + # Hier wird Spalte N (Index 14) wie bisher verwendet. filled_n = [row[13] if len(row) > 13 else '' for row in self.sheet_values[1:]] return next((i + 1 for i, v in enumerate(filled_n, start=1) if not str(v).strip()), len(filled_n) + 1) - # Update-Aufrufe erfolgen separat. + # Update-Aufrufe erfolgen separat für verschiedene Spalten. # ==================== WIKIPEDIA SCRAPER ==================== class WikipediaScraper: @@ -274,38 +275,47 @@ class DataProcessor: row = self.sheet_handler.sheet_values[i] self._process_single_row(i+1, row) def _process_single_row(self, row_num, row_data): - # Nur verarbeiten, wenn in Spalte A ein "x" steht - if not row_data[0].strip().lower() == "x": - print(f"[{datetime.now().strftime('%H:%M:%S')}] Überspringe Zeile {row_num}, kein 'x' in Spalte A.") - return - # Firmenname in Spalte B und Website in Spalte C - company_name = row_data[1] if len(row_data) > 1 else "" - website = row_data[2] if len(row_data) > 2 else "" + # Modusabhängige Verarbeitung: + # Normalmodus (Modus "1"): Firmenname in Spalte A, Website in Spalte B; Ausgabe in G:K, Datum in N, Version in Q. + # Re-Evaluierungsmodus (Modus "2"): Nur Zeilen mit "x" in Spalte A; Firmenname in Spalte B, Website in Spalte C; Ausgabe in H:L, Datum in O, Version in R. + if MODE == "2": + if not row_data[0].strip().lower() == "x": + print(f"[{datetime.now().strftime('%H:%M:%S')}] Überspringe Zeile {row_num}, kein 'x' in Spalte A.") + return + company_name = row_data[1] if len(row_data) > 1 else "" + website = row_data[2] if len(row_data) > 2 else "" + update_range = f"H{row_num}:L{row_num}" + dt_range = f"O{row_num}" + ver_range = f"R{row_num}" + else: + company_name = row_data[0] if len(row_data) > 0 else "" + website = row_data[1] if len(row_data) > 1 else "" + update_range = f"G{row_num}:K{row_num}" + dt_range = f"N{row_num}" + ver_range = f"Q{row_num}" print(f"\n[{datetime.now().strftime('%H:%M:%S')}] Verarbeite Zeile {row_num}: {company_name}") article = self.wiki_scraper.search_company_article(company_name, website) if article: company_data = self.wiki_scraper.extract_company_data(article.url) else: company_data = {'url': 'k.A.', 'first_paragraph': 'k.A.', 'branche': 'k.A.', 'umsatz': 'k.A.', 'mitarbeiter': 'k.A.'} - # Update der Spalten: Da Flag-Spalte A vorhanden ist, verschieben sich alle Ausgabespalten um eine Spalte nach rechts. - # Spalte H: URL, I: Erster Absatz, J: Branche, K: Umsatz, L: Mitarbeiter self.sheet_handler.sheet.update(values=[[ company_data.get('url', 'k.A.'), company_data.get('first_paragraph', 'k.A.'), company_data.get('branche', 'k.A.'), company_data.get('umsatz', 'k.A.'), company_data.get('mitarbeiter', 'k.A.') - ]], range_name=f"H{row_num}:L{row_num}") - # Spalte O: Datum und aktuelle Zeit + ]], range_name=update_range) current_dt = datetime.now().strftime("%Y-%m-%d %H:%M:%S") - self.sheet_handler.sheet.update(values=[[current_dt]], range_name=f"O{row_num}") - # Spalte R: Version - self.sheet_handler.sheet.update(values=[[Config.VERSION]], range_name=f"R{row_num}") + self.sheet_handler.sheet.update(values=[[current_dt]], range_name=dt_range) + self.sheet_handler.sheet.update(values=[[Config.VERSION]], range_name=ver_range) print(f"✅ Aktualisiert: URL: {company_data.get('url', 'k.A.')}, Erster Absatz: {company_data.get('first_paragraph', 'k.A.')[:30]}..., Branche: {company_data.get('branche', 'k.A.')}, Umsatz: {company_data.get('umsatz', 'k.A.')}, Mitarbeiter: {company_data.get('mitarbeiter', 'k.A.')}") time.sleep(Config.RETRY_DELAY) # ==================== MAIN ==================== if __name__ == "__main__": + mode_input = input("Wählen Sie den Modus: 1 für normalen Modus, 2 für Re-Evaluierungsmodus: ").strip() + MODE = "2" if mode_input == "2" else "1" try: num_rows = int(input("Wieviele Zeilen sollen überprüft werden? ")) except Exception as e: