diff --git a/einkauf_suche.py b/einkauf_suche.py index c5141e2..1fd367a 100644 --- a/einkauf_suche.py +++ b/einkauf_suche.py @@ -8,11 +8,7 @@ from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from bs4 import BeautifulSoup import sqlite3 - import sys -import concurrent.futures - - BLANK_PAGE_URL = "" @@ -36,115 +32,73 @@ class SearchThread(QThread): finally: self.search_finished.emit() + def search_for_website(self,webseite): + search_functions = { + "Reichelt": self.suche_auf_reichelt, + "Conrad": self.suche_auf_conrad, + "Kosatec": self.suche_auf_kosatec, + "Hornbach": self.suche_auf_hornbach, + "Contorion": self.suche_auf_contorion, + "Gastroteile Shop": self.suche_auf_gastroteileshop, + "TiroLED": self.suche_auf_tiroled, + "Megabad": self.suche_auf_megabad, + "Baubeschlagshop": self.suche_auf_baubeschlag, + "IPS": self.suche_auf_ips_shop, + "Brewes": self.suche_auf_brewes, + "Delker": self.suche_auf_delker, + "Knauss": self.suche_auf_knauss, + "schildershop24": self.suche_auf_schildershop24, + "Häfele": self.suche_auf_haefele, + "Esmeyer": self.suche_auf_esmeyer, + "Papstar": self.suche_auf_papstar, + "Pacovis": self.suche_auf_pacovis, + "Lusini": self.suche_auf_lusini, + "Hygi": self.suche_auf_hygi, + "Tischwelt": self.suche_auf_tischwelt, + "Schafferer": self.suche_auf_schafferer, + "Gastronomie Kaufhaus": self.suche_auf_gastronomie_kaufhaus, + "Arbeitsplatzmatten Profi": self.suche_auf_arbeitsplatzmattenprofi, + "Skiltex": self.suche_auf_skiltex, + "Franz-Mensch": self.suche_auf_franzmensch, + "Frank-Flechtwaren": self.suche_auf_frankflechtwaren, + "ARA": self.suche_auf_ara_arbeitsschutz, + "VKF-Renzel": self.suche_auf_vkf_renzel, + "Börner": self.suche_auf_boerner, + "GGM-Gastro": self.suche_auf_ggmgastro, + "Böttcher": self.suche_auf_boettcher, + "Büroshop24": self.suche_auf_bueroshop24, + "Buchhandlung am Markt": self.suche_buchhandlung_am_markt, + "Label-Ident": self.suche_auf_labelident, + "Transpak": self.suche_auf_transpak, + "PML": self.suche_auf_pml, + "DM-Folien": self.suche_auf_dmfolien, + "Proficleanshop": self.suche_auf_proficleanshop, + "Siepmann": self.suche_auf_siepmann, + "FK-Söhnchen": self.suche_auf_fksoehnchen, + "Wahl-Agar": self.suche_auf_wahl_agrar, + "TVV-Verpackungen": self.suche_auf_tvv, + "Eierschachteln.de": self.suche_auf_eierschachteln, + "KOX": self.suche_auf_kox, + "Reinigungsberater.de": self.suche_auf_reinigungsberater, + "VBS-Hobby": self.suche_auf_vbshobby, + "Ökonomed": self.suche_auf_oekonomed, + "Rossmann": self.suche_auf_rossmann, + "Betzold": self.suche_auf_betzold, + } + + search_function = search_functions.get(webseite) + + if search_function: + search_function() + else: + print(f"Keine Suchfunktion für die Webseite '{webseite}' gefunden.") + def start_search_on_webseite(self, webseite): try: self.driver.execute_script(f"window.open('{BLANK_PAGE_URL}', '_blank');") - self.driver.switch_to.window(self.driver.window_handles[-1]) - - if webseite == "Reichelt": - self.suche_auf_reichelt() - elif webseite == "Conrad": - self.suche_auf_conrad() - elif webseite == "Kosatec": - self.suche_auf_kosatec() - elif webseite == "Hornbach": - self.suche_auf_hornbach() - elif webseite =="Contorion": - self.suche_auf_contorion() - elif webseite == "Gastroteile Shop": - self.suche_auf_gastroteileshop() - elif webseite == "TiroLED": - self.suche_auf_tiroled() - elif webseite == "Megabad": - self.suche_auf_megabad() - elif webseite == "Baubeschlagshop": - self.suche_auf_baubeschlag() - elif webseite == "IPS": - self.suche_auf_ips_shop() - elif webseite == "Brewes": - self.suche_auf_brewes() - elif webseite == "Delker": - self.suche_auf_delker() - elif webseite == "Knauss": - self.suche_auf_knauss() - elif webseite == "Schildershop24": - self.suche_auf_schildershop24() - elif webseite == "Häfele": - self.suche_auf_haefele() - elif webseite == "Esmeyer": - self.suche_auf_esmeyer() - elif webseite == "Papstar": - self.suche_auf_papstar() - elif webseite == "Pacovis": - self.suche_auf_pacovis() - elif webseite == "Lusini": - self.suche_auf_lusini() - elif webseite == "Hygi": - self.suche_auf_hygi() - elif webseite == "Tischwelt": - self.suche_auf_tischwelt() - elif webseite == "Schafferer": - self.suche_auf_schafferer() - elif webseite == "Gastronomie Kaufhaus": - self.suche_auf_gastronomie_kaufhaus() - elif webseite == "Arbeitsplatzmatten Profi": - self.suche_auf_arbeitsplatzmattenprofi() - elif webseite == "Skiltex": - self.suche_auf_skiltex() - elif webseite == "Franz-Mensch": - self.suche_auf_franzmensch() - elif webseite == "Frank-Flechtwaren": - self.suche_auf_frankflechtwaren() - elif webseite == "ARA": - self.suche_auf_ara_arbeitsschutz() - elif webseite == "VKF-Renzel": - self.suche_auf_vkf_renzel() - elif webseite == "Börner": - self.suche_auf_boerner() - elif webseite == "GGM-Gastro": - self.suche_auf_ggmgastro() - elif webseite == "Böttcher": - self.suche_auf_boettcher() - elif webseite == "Büroshop24": - self.suche_auf_bueroshop24() - elif webseite == "Buchhandlung am Markt": - self.suche_buchhandlung_am_markt() - elif webseite == "Label-Ident": - self.suche_auf_labelident() - elif webseite == "Transpak": - self.suche_auf_transpak() - elif webseite == "PM": - self.suche_auf_pml() - elif webseite == "DM-Folien": - self.suche_auf_dmfolien() - elif webseite == "Proficleanshop": - self.suche_auf_proficleanshop() - elif webseite == "Siepmann": - self.suche_auf_siepmann() - elif webseite == "FK-Söhnchen": - self.suche_auf_fksoehnchen() - elif webseite == "Wahl-Agar": - self.suche_auf_wahl_agrar() - elif webseite == "TVV-Verpackungen": - self.suche_auf_tvv() - elif webseite == "Eierschachteln.de": - self.suche_auf_eierschachteln() - elif webseite == "KOX": - self.suche_auf_kox() - elif webseite == "Reinigungsberater.de": - self.suche_auf_reinigungsberater() - elif webseite == "VBS-Hobby": - self.suche_auf_vbshobby() - elif webseite == "Ökonomed": - self.suche_auf_oekonomed() - elif webseite == "Rossmann": - self.suche_auf_rossmann() - elif webseite == "Betzold": - self.suche_auf_betzold() - - + self.search_for_website(webseite) except Exception as e: print(f"Fehler bei der Suche auf {webseite}: {e}") @@ -606,7 +560,6 @@ class SearchThread(QThread): # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) - def suche_auf_wahl_agrar(self): # URL für die Suche generieren search_url = 'https://www.agrar-fachversand.com/de/' # Ersetzen Sie dies durch die tatsächliche URL für Wahl Agrar @@ -694,18 +647,14 @@ class SearchThread(QThread): self.driver.get(search_url) - class WebseitenSucheApp(QWidget): def __init__(self): super().__init__() self.categories, self.webpages = self.get_categories_and_webpages() - self.checkbox_states = {webpage: False for category_webpages in self.webpages for webpage in category_webpages} - self.search_term = "" self.driver = None - self.init_ui() def get_categories_and_webpages(self): @@ -726,9 +675,6 @@ class WebseitenSucheApp(QWidget): return categories, webpages - - # ... - def init_ui(self): self.setStyleSheet("background-color: black; color: white;") layout = QVBoxLayout() @@ -880,12 +826,6 @@ class WebseitenSucheApp(QWidget): # Setze den Stretch-Faktor für die zusätzliche Zeile zwischen den Kategorien grid_layout.setRowStretch(row_position + num_rows_for_category, 0) - - - - - - ########################################################################################################################## layout.addLayout(grid_layout) self.setLayout(layout) @@ -905,20 +845,17 @@ class WebseitenSucheApp(QWidget): layout.addWidget(search_button) search_button.setStyleSheet("color: white; border: 1px solid white;") - # Neues Suche-Button new_search_button = QPushButton("Neue Suche starten", self) new_search_button.clicked.connect(self.clear_checkboxes) layout.addWidget(new_search_button) new_search_button.setStyleSheet("color: white; border: 1px solid white;") - self.setLayout(layout) self.setGeometry(300, 300, 400, 200) self.setWindowTitle('Webseiten Suche App') self.show() - def make_checkbox_callback(self, webpage): def checkbox_callback(state): self.checkbox_states[webpage] = state == Qt.Checked