import sys from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QLineEdit, QPushButton, QCheckBox, QMessageBox from concurrent.futures import ThreadPoolExecutor from hornbach import suche_auf_hornbach from reichelt import suche_auf_reichelt from kosatec import suche_auf_kosatec from conrad import suche_auf_conrad from contorion import suche_auf_contorion from gastroteileshop import suche_auf_gastroteileshop from tiroled import suche_auf_tiroled from megabad import suche_auf_megabad from ips import suche_auf_ips_shop from brewes import suche_auf_brewes from delker import suche_auf_delker from knauss import suche_auf_knauss from schildershop24 import suche_auf_schildershop24 from haefele import suche_auf_haefele from esmeyer import suche_auf_esmeyer from papstar import suche_auf_papstar from lusini import suche_auf_lusini from hygi import suche_auf_hygi from schafferer import suche_auf_schafferer from gastrokaufhaus import suche_auf_gastronomie_kaufhaus from boettcher import suche_auf_boettcher from bueroshop import suche_auf_bueroshop24 class WebseitenSucheApp(QWidget): def __init__(self): super().__init__() self.selected_webpages = { "Reichelt": False, "Conrad": False, "Kosatec": False, "Hornbach": False, "Contorion": False, "Gastro Teile Shop": False, "TiroLED": False, "Megabad": False, "IPS": False, "Brewes": False, "Delker": False, "Knauss": False, "Schildershop24": False, "Häfele": False, "Esmeyer": False, "Papstar": False, "Lusini": False, "Hygi": False, "Schafferer": False, "Gastronomie Kaufhaus": False, "Böttcher": False, "Büroshop24": False } self.search_term = "" self.init_ui() def init_ui(self): layout = QVBoxLayout() # Webseiten-Auswahl layout.addWidget(QLabel("Wählen Sie die Webseiten aus:")) for webpage, checked in self.selected_webpages.items(): checkbox = QCheckBox(webpage) checkbox.setChecked(checked) checkbox.stateChanged.connect(lambda state, page=webpage: self.update_webpage_state(page, state)) layout.addWidget(checkbox) # Suchbegriff-Eingabe search_label = QLabel("Geben Sie den Suchbegriff ein:") layout.addWidget(search_label) search_input = QLineEdit(self) search_input.textChanged.connect(self.update_search_term) layout.addWidget(search_input) # Suchen-Button search_button = QPushButton("Suche starten", self) search_button.clicked.connect(self.start_search) layout.addWidget(search_button) # Neues Suche-Button new_search_button = QPushButton("Neue Suche starten", self) new_search_button.clicked.connect(self.new_search) layout.addWidget(new_search_button) self.setLayout(layout) self.setGeometry(300, 300, 400, 200) self.setWindowTitle('Webseiten Suche App') self.show() def update_webpage_state(self, webpage, state): self.selected_webpages[webpage] = state == 2 # 2 entspricht dem Zustand "ausgewählt" def update_search_term(self, text): self.search_term = text def start_search(self): selected_webpages = [webpage for webpage, selected in self.selected_webpages.items() if selected] if not selected_webpages: QMessageBox.warning(self, "Fehler", "Bitte wählen Sie mindestens eine Webseite aus.") return if not self.search_term: QMessageBox.warning(self, "Fehler", "Bitte geben Sie einen Suchbegriff ein.") return try: with ThreadPoolExecutor() as executor: futures = [] for webseite in selected_webpages: # Fügen Sie hier Ihre anderen Suchfunktionen hinzu if webseite == "Reichelt": futures.append(executor.submit(suche_auf_reichelt, self.search_term)) elif webseite == "Conrad": futures.append(executor.submit(suche_auf_conrad, self.search_term)) elif webseite == "Kosatec": futures.append(executor.submit(suche_auf_kosatec, self.search_term)) elif webseite == "Hornbach": futures.append(executor.submit(suche_auf_hornbach, self.search_term)) elif webseite =="Contorion": futures.append(executor.submit(suche_auf_contorion, self.search_term)) elif webseite == "Gastro Teile Shop": futures.append(executor.submit(suche_auf_gastroteileshop, self.search_term)) elif webseite == "TiroLED": futures.append(executor.submit(suche_auf_tiroled, self.search_term)) elif webseite == "Megabad": futures.append(executor.submit(suche_auf_megabad, self.search_term)) elif webseite == "IPS": futures.append(executor.submit(suche_auf_ips_shop, self.search_term)) elif webseite == "Brewes": futures.append(executor.submit(suche_auf_brewes, self.search_term)) elif webseite == "Delker": futures.appen(executor.submit(suche_auf_delker, self.search_term)) elif webseite == "Knauss": futures.append(executor.submit(suche_auf_knauss, self.search_term)) elif webseite == "Schildershop24": futures.append(executor.submit(suche_auf_schildershop24, self.search_term)) elif webseite == "Häfele": futures.append(executor.submit(suche_auf_haefele, self.search_term)) elif webseite == "Esmeyer": futures.append(executor.submit(suche_auf_esmeyer, self.search_term)) elif webseite == "Papstar": futures.append(executor.submit(suche_auf_papstar, self.search_term)) elif webseite == "Lusini": futures.append(executor.submit(suche_auf_lusini, self.search_term)) elif webseite == "Hygi": futures.append(executor.submit(suche_auf_hygi, self.search_term)) elif webseite == "Schafferer": futures.append(executor.submit(suche_auf_schafferer, self.search_term)) elif webseite == "Gastronomie Kaufhaus": futures.append(executor.submit(suche_auf_gastronomie_kaufhaus, self.search_term)) elif webseite == "Böttcher": futures.append(executor.submit(suche_auf_boettcher, self.search_term)) elif webseite == "Büroshop24": futures.append(executor.submit(suche_auf_bueroshop24, self.search_term)) for future in futures: future.result() # Warte auf das Ende der Suche QMessageBox.information(self, "Suche abgeschlossen", "Die Suche wurde erfolgreich abgeschlossen.") except Exception as e: QMessageBox.critical(self, "Fehler", f"Fehler bei der Suche: {e}") def new_search(self): # Implementieren Sie hier die Logik für eine neue Suche # Das könnte bedeuten, dass Sie die GUI zurücksetzen oder andere Vorbereitungen treffen print("Neue Suche starten") if __name__ == '__main__': app = QApplication(sys.argv) window = WebseitenSucheApp() sys.exit(app.exec_())